维护'是个好主意吗;货币';Linkedlist程序中的(列表末尾)指针? 在Linkedlist程序中维护“curr”(列表末尾)指针是个好主意吗? 或者我们应该创建一个函数,它可以返回指向最后一个 链接列表的节点 推荐什么,每种方法的优缺点是什么

维护'是个好主意吗;货币';Linkedlist程序中的(列表末尾)指针? 在Linkedlist程序中维护“curr”(列表末尾)指针是个好主意吗? 或者我们应该创建一个函数,它可以返回指向最后一个 链接列表的节点 推荐什么,每种方法的优缺点是什么,c,linked-list,coding-style,singly-linked-list,C,Linked List,Coding Style,Singly Linked List,为了遍历列表,最好跟踪起始节点(根节点)。回到您的想法,为了向后遍历,您必须使用双/循环链接列表,其中前一个节点的地址由其后继节点保留,或者最后一个节点以循环形式连接到第一个节点 了解 双链接列表: 循环链接列表: 唯一的好处是提高添加效率 您可以维护指向最后一项的指针,但只有在具有描述整个列表的struct时,才应该这样做。您不应该在全局范围内执行此操作,因为您将无法拥有多个列表 struct { LinkedListNode next; //data } LinkedListNod

为了遍历列表,最好跟踪起始节点(根节点)。回到您的想法,为了向后遍历,您必须使用双/循环链接列表,其中前一个节点的地址由其后继节点保留,或者最后一个节点以循环形式连接到第一个节点

了解 双链接列表:
循环链接列表:

唯一的好处是提高添加效率

您可以维护指向最后一项的指针,但只有在具有描述整个列表的
struct
时,才应该这样做。您不应该在全局范围内执行此操作,因为您将无法拥有多个列表

struct {
  LinkedListNode next;
  //data
} LinkedListNode
描述列表的结构可以是这样的:

struct {
  LinkedListNode first; //required
  LinkedListNode last; //optional, makes adding quicker
} LinkedList
然后,您必须使用带有
LinkedList
的函数来操作列表,这些函数将需要您进行更多的工作和测试,以确保指针始终正确

这种方法的另一个缺点是,您无法快速列出子列表。i、 你不能只做这个
sublist=node->next
获取跳过某些元素的列表


因此,另一种方法是不使用
LinkedList
struct,只在添加多个项目时临时存储结束指针。

创建链接列表的最简单方法是,不必跟踪列表中添加的最后一个节点,即curr。在这个列表中,您只需要注意head(指向列表中的第一个节点)和temporary(下一个要添加到列表中的变量)

伪代码:

`  
while(you wanna add more nodes in the list)
                   {
                              temporary->next=head;
                              head=temporary;
                   }
`

此列表从右向左展开,即
1
(head为1),然后
2->1
(现在head为2),然后
3->2->1
(现在head为3)&依此类推,您可以看到添加的新节点成为head

当您将元素从添加到时,您需要注意三件事,即头部临时当前

这方面的伪代码是:

`
 current =head;
while(you wanna add more nodes in the list)
                   {
                              current->next=temporary;
                              current=temporary
                   }
`

此列表从左侧扩展到右侧,即
1
(头部为1),然后
1->2
(头部仍为2),然后
1->2->3
(头部仍为3)&如此,您可以看到头部在向列表添加新节点时保持不变


在第一种情况下(列表从右到左展开),您不需要跟踪当前数据,也不需要在第二种情况下根据需要进行更新。

他们没有询问双链接列表。我将其作为一个示例介绍,因为他询问了如何维护“curr”。“回到您的想法,以便向后遍历…”很明显,你们把这个问题理解为,当列表并没有问这个问题时,我如何向后遍历列表。哦..谢谢合作伙伴。我的错。你们说的curr指针是什么意思?名单结束了?是的。“curr”的意思是“列表的末尾”。curr将存储在哪里?“curr”通常存储在全局变量范围内。这是个坏主意,因为链接列表的实例不能超过一个。在添加多个项目以提高流程效率的同时,可以维护本地指针,但不适合使用全局指针。