具有单独的左节点和右节点但尾部相同的双向链表
Doubly Linked List with separate left and right node but same tail
>我正在研究双链表,其中头部必须拥有 2 只"手",左右,两只手必须最终位于同一条尾巴。最后,它应该能够打印出的值
- 头部 - 左 - 尾部
- 头 - 右 - 尾
就像二进制搜索一样,但必须在同一尾部结束。
我对应该使用什么来创建左右节点有点困惑。我尝试使用了很多中间插入方法,一周后我仍然不知道如何打印出我想要的打印出来。
我也尝试使用二进制搜索方法,参考这里,但无法弄清楚如何制作所有手都应该最终到达的这条尾巴。
这就是我编写结构的方式
struct City
{
char name[20], place[20], food[20];
struct City *next;
}
*head, *tail, *new, *right,*left,*del_temp, *temp, *temp2;
我也用过这个...但仍然没有解决
struct City
{
char name[20], place[20], food[20];
struct City *right;
struct City *left;
}
*head, *tail, *new, *del_temp, *temp, *temp2;
很抱歉缺少代码,我用每种不同的插入方法制作了几个项目。我不确定该放哪一个。
我的问题是,我应该如何从这里开始?我应该为左手和右手使用树和子树吗?我应该使用什么算法?
如果我继续使用双链表,如何获得左手和右手的单独输出?或者,如果我要继续进行二进制搜索,我最终如何获得确切的尾巴?
有什么建议吗?
谢谢之前
你只需要使用一个循环双链表,这样它就会去
Head
Left Right
Tail
将每个链接到彼此的左右,以创建双链接,然后你可以做的是,当你想向右时,只需从头部开始,到右手,然后打印并停在尾部。左边也是如此,如果你需要从尾巴开始,你也可以这样做,因为你有一个唯一的指针。
https://i.stack.imgur.com/SCNzn.png
一幅画得很糟糕,但有箭头!
这更像是一个评论,但这是你想要的结构类型吗?
.-> N1 <---> N2 <---> N3 <-.
Head <__/ __> Tail
.-> N4 <---> N5 <---> N6 <-./
我不确定您的确切要求是什么。
相关文章:
- 反向给定链表中的K节点
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- Boost Graph Library,修复节点大小
- C++A*算法并不总是在路径中具有目标节点
- 如何找到2个单链表的公共节点
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 将尾部调用void(i32,..)位转换为llvm::函数以获取FnAttribute
- 为什么我的删除节点函数实际上没有删除节点?
- 我们可以删除链表中静态内存中的节点吗
- 如何在pugixml中获取节点的内部XML
- basic_string的前导/尾部不区分空格的特征
- 为什么我们要为avl树实现返回一个指向节点的指针,而不是void函数
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 编写一个函数来删除单链表中的节点(尾部除外),仅授予对该节点的访问权限
- 链表,在尾部后面插入节点
- 删除最后一个节点,并将尾部更新到最后一个节点
- 尾部指向最后一个节点
- 具有单独的左节点和右节点但尾部相同的双向链表