数据结构的一道题,请问下p=L;L->next=NULL是什么意思,尤其是它为什么要有p=L?谢谢

2024-10-29 11:50:17
推荐回答(2个)
回答1:

题目是单链表逆置,这个程序实现了 A->B->C->D->null; 变成 null<-A<-B<-C<-D

具体到程序,假设有个链表 A->B->C->D->null,一开始 L 作为参数传入进来,那么就是
L->A->B->C->D->null
p=L; //执行 p = L; 即将 p 和 L 执行同一个链表,此时 L(p)->A->B->C->D->null

p=p->next; // 此时 L->A->B->C->D->null 而 p 指向 B 了
// 从p 看来,链表是 p->B->C->D->null

L->next=NULL; // 链表变成了2根 : null<-A<-L p->B->C->D->null

接下来循环从 p 的链条中取出一个元素,放入 L 链条中,然后调整 L 的位置,直到 p 指向 null 时为止,过程如下:
null<-A<-B<-L p->C->D->null
null<-A<-B<-C<-L p->D->null
null<-A<-B<-C<-D<-L p->null

回答2:

L是头节点指针,p=L使得指针p也指向头节点。L->next=NULL表示头节点与链表分离,因为p=p-next的p指针指向了下一个节点。