数据结构初级题.急~

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:42:36
LinkList Demo(LinkList L){ //L是无头结点的单链表
ListNode *Q,*P;
if(L&&L->next){
Q=L;L=L->next;P=L;
while(P->next) P=P->next; 1
P->next=Q;Q->next=NULL; 2
}
return L;

请问语句1和2的功能.

顺便给我说下[Q=L;L=L->next;P=L]这句的意思好不?
while(P->next) P=P->next
这个部分还是有点不太清楚.其他的差不多了.谢谢匿名大哥吖..

1. Q=L--->把L零时存到Q,等下才用到。
2. L=L->next--->把L指向它的下一个元素,然后P=L就把这个元素指向了P。

3. while(P->next) P=P->next;不断的循环,直到链表的最后一个元素给了P。这个时候,P的next应该是空的(NULL)了。
4. P->next是空的,但是我们P->next=Q,这样就把一开始的L给了P->next了,然后再用Q->next=NULL让本来的L->next等于NULL了

总的操作就是把链表的第一个元素放到了链表的最后~~

补充:while()判断P->next是不是真,当不是真的时候也就是说P->next没有下一个了,也就是P已经到了链表的尾了。。