这样写能逆转链表吗?
#include <iostream,h>
#include <string.h>
struct Node
{
int num ;
Node *next ;
};
Node *ReverseList(Node *head) //链表逆序(循环方法)
{
Node *p,*q,*r;
p=head; //一开始p指向第一个节点
q=p->next; //q指向第二个节点
while (q!=NULL) //如果没到链尾
{ //以第一次循环为例
r=q->next; //r暂时存储第三个节点
q->next=p; //没执行此句前,q->next指向第三个节点
//执行之后,q->next指向第一个节点p
p=q; //之后p指向第二个节点
q=r; //q指向第三个节点
//即...p=>q=>r...变为 ...p<=q<=r...
}
head->next=NULL; //最后原来的链头变为链尾,把它指向NULL。
head=p; //原来的链尾变成链头
return head;
}
c++转型中,阵痛。。。
某面试官说 head->next=NULL; 是把第二个节点变为空而不是最后一个指向null
我就这样挂了。
求真相
#include <string.h>
struct Node
{
int num ;
Node *next ;
};
Node *ReverseList(Node *head) //链表逆序(循环方法)
{
Node *p,*q,*r;
p=head; //一开始p指向第一个节点
q=p->next; //q指向第二个节点
while (q!=NULL) //如果没到链尾
{ //以第一次循环为例
r=q->next; //r暂时存储第三个节点
q->next=p; //没执行此句前,q->next指向第三个节点
//执行之后,q->next指向第一个节点p
p=q; //之后p指向第二个节点
q=r; //q指向第三个节点
//即...p=>q=>r...变为 ...p<=q<=r...
}
head->next=NULL; //最后原来的链头变为链尾,把它指向NULL。
head=p; //原来的链尾变成链头
return head;
}
c++转型中,阵痛。。。
某面试官说 head->next=NULL; 是把第二个节点变为空而不是最后一个指向null
我就这样挂了。
求真相
...全文
相关推荐
单向链表逆转单向链表逆转单向链表逆转
它从头结点开始,遍历链表,输出每个结点的数据。链表的逆转链表的逆转是指将链表的结点顺序颠倒的过程。在上面的代码中,LinkReverse 函数用于将链表逆转。
逆转单向链表(有7种方法)
**反向迭代法**: 创建一个新的空链表作为逆转后的链表,从原链表的末尾开始遍历,将每个节点插入到新链表的头部。当遍历完原链表后,新链表即为逆转后的链表。5.
C语言实现的一个单向链表逆转
(head, NULL); // 打印逆转后的链表 printLinkedList(head); // 自行实现打印链表的函数 return 0;}```这个例子展示了如何使用C语言和递归法实现单向链表的逆转
逆转一个链表
### 链表逆转的原理链表的逆转是指将链表中的元素顺序颠倒过来。例如,对于一个单向链表1 -> 2 -> 3 -> 4,逆转后应变为4 -> 3 -> 2 -> 1。
java 实现单链表逆转详解及实例代码
在单链表逆转的场景中,基本情况即链表为空或仅包含一个节点,这两种情况都不需要逆转操作,直接返回即可。而当链表有多于一个节点时,我们递归地逆转剩余的部分,然后将当前节点的链接反转,使其指向前一个节点。


非技术区
