倒数4,5句p->next=head->next; head->next=p;这两句为什么能实现逆序输出,能解释一下么。C语言

逆序创建单链表

struct Node *create(int n)//逆序创建带头节点单链表,n为链表中元素个数
{
struct Node *L;//L为表头
L=(struct Node*)malloc(sizeof(struct Node));
L->next=NULL;
for(int i=0;i<n;i++)
{
DataType a;
scanf(a);//输入a的值
struct Node *p;
p=(struct Node*)malloc(sizeof(struct Node));
p->data=a;
p->next=L->next;//将生成的节点插入到头节点后面
L->next=p;
}
return L;//返回表头
}
最新回答
夏櫻之雨

2024-11-29 12:34:25

L的实际功能就是保存了新p的值。
逻辑是:
1 生成新p;
2 数据存在新p中;

3 新p的下一节点取L中的值,这个值是上一次p的值
4 L中保存新p值,准备付给下一个p中。
悠悠变黑脸婆!

2024-11-29 13:17:18

你画一画就能清晰了,首先将头节点之后的节点挪到新节点的后面,然后再将新节点赋值给头节点的指针,这样插入的就是倒序的。
追问
那放张图么,刚学链表有点不太懂
追答