void Reverse_L(LinkList &L) //逆置
{
LinkList s,p,q;
p=L->next;
q=p->next;
s=q->next;
p->next=NULL;
while(s)
{
q->next=p;
p=q;
q=s;
if(s->next!=NULL)
s=s->next;
else
break;
}
s->next=p;
L->next=s;
p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
求解释这一段逆置的代码
答案:1 悬赏:80 手机版
解决时间 2021-02-08 11:32
- 提问者网友:爱唱彩虹
- 2021-02-08 06:44
最佳答案
- 五星知识达人网友:长青诗
- 2021-02-08 07:28
这个函数是把一个链表逆序的。链表中除了链表头以外,至少要有三个元素,否则该函数会崩溃。
void Reverse_L(LinkList &L) //逆置
{
LinkList s,p,q;//p,q,s分别指向链表中的一个元素,p指向连续三个元素中的第一个,q指向连续三个元素中的第二个,s指向连续三个元素中的第三个,我称它为三元组
p=L->next;//此处p指向整个链表的第一个元素
q=p->next;//此处q指向整个链表的第二个元素
s=q->next;//此处s指向整个链表的第三个元素
p->next=NULL;//此处p指向整个链表的第一个元素,逆序后,第一个元素变成链表尾,所以p的next赋值为空
while(s)//s指向三元组的第三个元素,此处判断s是否为空
{
q->next=p;//把第二个元素q的next指向第一个元素p,就是把三元组的前两个元素的指向关系逆过来
//以下4行代码是切换三元组的,把三元组向后移了一位
p=q;//原三元组的第二个元素作为新三元组第一个元素p
q=s;//原三元组的第三个元素作为新三元组的第二个元素q
if(s->next!=NULL) //如果原三元组的第三个元素不是链表尾
s=s->next;//则把原三元组之后的一个元素作为新三元组的第三个元素s
else
break;//如果原三元组的第三个元素是链表尾,则退出循环
}
//出了循环以后,p指向新三元组的第一个元素,q和s相等,都指向新三元组的第二个元素,由于到了链表尾,新三元组只有两个元素,没有第三个元素
s->next=p;//把链表尾s的next指向链表的倒数第二元素p
L->next=s; //把链表头L的next指向原来的链表尾s
p=L->next; //p指向新链表的第一个元素
while(p!=NULL)
{
printf("%d ",p->data);//循环输出逆序后的新链表
p=p->next;
}
}
void Reverse_L(LinkList &L) //逆置
{
LinkList s,p,q;//p,q,s分别指向链表中的一个元素,p指向连续三个元素中的第一个,q指向连续三个元素中的第二个,s指向连续三个元素中的第三个,我称它为三元组
p=L->next;//此处p指向整个链表的第一个元素
q=p->next;//此处q指向整个链表的第二个元素
s=q->next;//此处s指向整个链表的第三个元素
p->next=NULL;//此处p指向整个链表的第一个元素,逆序后,第一个元素变成链表尾,所以p的next赋值为空
while(s)//s指向三元组的第三个元素,此处判断s是否为空
{
q->next=p;//把第二个元素q的next指向第一个元素p,就是把三元组的前两个元素的指向关系逆过来
//以下4行代码是切换三元组的,把三元组向后移了一位
p=q;//原三元组的第二个元素作为新三元组第一个元素p
q=s;//原三元组的第三个元素作为新三元组的第二个元素q
if(s->next!=NULL) //如果原三元组的第三个元素不是链表尾
s=s->next;//则把原三元组之后的一个元素作为新三元组的第三个元素s
else
break;//如果原三元组的第三个元素是链表尾,则退出循环
}
//出了循环以后,p指向新三元组的第一个元素,q和s相等,都指向新三元组的第二个元素,由于到了链表尾,新三元组只有两个元素,没有第三个元素
s->next=p;//把链表尾s的next指向链表的倒数第二元素p
L->next=s; //把链表头L的next指向原来的链表尾s
p=L->next; //p指向新链表的第一个元素
while(p!=NULL)
{
printf("%d ",p->data);//循环输出逆序后的新链表
p=p->next;
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯