代码如下
void rev_link(LinkList llist){ /*将带有头结点的单链表llist置逆*/
PNode p,q,r;
p=llist->link;
if(p==NULL)return; /*空表*/
q=p->link;
if(q==NULLl return; /*只有一个结点*/
r=q->link;
while(r!=NULL){ /*修改各个结点的指针*/
q->link=p;
p=q;
q=r;
r=r->link;
}
q->link=p; /*修改最后一个结点的指针*/
llist->link->link=NULL; /*第一个结点指针置空*/
llist->link=q; /*将最后一个结点置为新链表的第一个结点*/
}
我想问问while循环里那一段要怎么理解啊
while那句的意思就是如果当前结点不是尾结点,因为尾结点的link指针是NULL,所以判断r是否是最后一个结点