早教吧 育儿知识 作业答案 考试题库 百科 知识分享

关于单链表逆置的一些问题,想了好久,望各位高手解答!谢谢我的财富值不多,回答好的话,我追加下面是标准的逆置算法:voidlinklistreverse(linklist&L){p=L->next;q=p->next;s=q->next;p->next=null;

题目详情
关于单链表逆置的一些问题,想了好久,望各位高手解答!谢谢 我的财富值不多,回答好的话,我追加
下面是标准的逆置算法:
void linklist_reverse(linklist &L)
{
p=L->next;q=p->next;
s=q->next;p->next=null;
while(s->next)
{
q->next=p;p=q;
q=s;s=s->next;
}
q->next=p;s->next=q;L->next=s;
}
这个程序我有两个地方不懂:1、为什么要先把q和s置空,即第四行的p-next=null
2、最后那句:L->next=s,如果要这句的话应该是个循环链表了,但题目没有说明是循环单链表啊.
▼优质解答
答案和解析
我相信你的疑惑来自于这个题目本身,应该是一个——带有头结点——的——单链表 对函数传入的 L 就是头结点指针.对你的第一个问题,p->next=null,是因为在程序执行到此时,p指向了第一个节点,而这个节点将成为尾节点,而...