【问题标题】:Reversing Of A Linked List链表的反转
【发布时间】:2019-10-20 07:59:08
【问题描述】:

我无法理解为什么我们在这个函数中使用下一个节点,如果我们实际查看它不是必需的,但是当我尝试删除下一个节点指针时,程序只给我一个节点的输出.如果有人能向我解释我在这个程序中的解释错误并能帮助我理解这个概念,那就太好了。

//node is a datatype of struct *node and I have used typedef to make it simpler.    

node Reverse(node head)
{
node temp,prevnode=NULL;
node nextnode;
temp=head;
while(temp!=NULL)
{   
    nextnode=temp->next;
    temp->next=prevnode;
    prevnode=temp;
    temp=nextnode;
}
head=prevnode;
return(head);
}

【问题讨论】:

    标签: pointers data-structures linked-list reverse singly-linked-list


    【解决方案1】:

    所以基本上你正在做的是遍历一个链表,并使所有的链接指向 。

    所以循环是

    从位于头部的临时节点开始

    • nextnode = 正是如此,您正在从 current(temp) 获取列表中的下一个节点
    • 然后将当前节点的下一个节点设置为上一个节点
    • 然后你将前一个节点设置为当前节点,这样你就可以继续前进了
    • 然后将指针更改为下一个节点

    如果一开始不设置nextnode,在设置当前节点的next(到前一个节点)的步骤中会覆盖它

    此外,删除 nextnode 变量时只得到 1 个节点的输出的原因是,您在开始时将下一个节点覆盖到前一个节点,这没什么。之后,您移动到那个无节点,这将结束循环。然后你的头是前一个节点,这只是你开始的第一个节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-21
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多