谁能解释下下面的数据结构的算法啊~尤其是循环的部分linklist *reverlist(linklist *head) //逆置链表子函数{linklist *q,*p;if(head && head->next) { p="head"; q="p-">next;p->next=NULL;while(q){p="q";q="q-">nextp->next=head;hea

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 14:32:25

谁能解释下下面的数据结构的算法啊~尤其是循环的部分linklist *reverlist(linklist *head) //逆置链表子函数{linklist *q,*p;if(head && head->next) { p="head"; q="p-">next;p->next=NULL;while(q){p="q";q="q-">nextp->next=head;hea
谁能解释下下面的数据结构的算法啊~尤其是循环的部分
linklist *reverlist(linklist *head) //逆置链表子函数
{
linklist *q,*p;
if(head && head->next)
{
p="head";
q="p-">next;
p->next=NULL;
while(q)
{
p="q";
q="q-">next
p->next=head;
head="p";
}
}

谁能解释下下面的数据结构的算法啊~尤其是循环的部分linklist *reverlist(linklist *head) //逆置链表子函数{linklist *q,*p;if(head && head->next) { p="head"; q="p-">next;p->next=NULL;while(q){p="q";q="q-">nextp->next=head;hea
//给你整理了一下:
linklist *reverlist(linklist *head) //逆置链表子函数
{
linklist *q,*p;
if(head && head->next) //如果链表不为空
{
p = head; //保存头指针到p
q = p->next; //保存第一节点到q
p->next = NULL; //空置头节点

while(q) //循环一个节点一个节点反转.当存在后续节点时
{
p = q; //保存当前节点
q = q->next; //取得下一节点,可能为NULL(到最后一个的时候)
p->next = head; //把上一个节点放到next中---倒置
head = p; //重新定位指针, head仍然是倒置后的链表头
}
}

return head;
}