两题单链表逆置,求讲解
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/17 14:14:45
两题单链表逆置,求讲解
1.p=head->next;
head->next=NULL;
while(p)
{s=p;
p=p->next;
s->next=head->next;
head->=s;
}
p=head-next;
2.p=head->next;
q=p->next;
p->next=NULL;
while(q!=NULL)
{
r=q->next;
q->next=p;
p=q;
q=r;
}
head->next=p;
本人初学数据结构,看不懂这两个链表是如何逆置,
1.p=head->next;
head->next=NULL;
while(p)
{s=p;
p=p->next;
s->next=head->next;
head->=s;
}
p=head-next;
2.p=head->next;
q=p->next;
p->next=NULL;
while(q!=NULL)
{
r=q->next;
q->next=p;
p=q;
q=r;
}
head->next=p;
本人初学数据结构,看不懂这两个链表是如何逆置,
第一个,有头结点的单链表,从头到尾顺次摘下所有结点并插入在表头:
p=head->next; p指向第一个结点
head->next=NULL; 断开头结点和链表
while(p)当链表不为空时
{s=p;中间指针保存当前结点好摘下
p=p->next;当前指针后移
s->next=head->next;将摘下的结点
head->=s;表头插入
}
第二个,有头结点单链表,至少一个数据结点,与前面的相似,只是处理方法为每摘下一个结点,将其后继域指向当前第一个结点
p=head->next; 第一个结点
q=p->next;第二个结点
p->next=NULL;断开链表
while(q!=NULL)待摘结点链表不为空
{
r=q->next;中间指针指向待摘结点表头的后继
q->next=p;当前摘下结点指向第一个结点
p=q;第一个结点移到刚插入的结点
q=r;待摘结点指针后移
}
head->next=p;将表头结点和第一个结点链接起来
p=head->next; p指向第一个结点
head->next=NULL; 断开头结点和链表
while(p)当链表不为空时
{s=p;中间指针保存当前结点好摘下
p=p->next;当前指针后移
s->next=head->next;将摘下的结点
head->=s;表头插入
}
第二个,有头结点单链表,至少一个数据结点,与前面的相似,只是处理方法为每摘下一个结点,将其后继域指向当前第一个结点
p=head->next; 第一个结点
q=p->next;第二个结点
p->next=NULL;断开链表
while(q!=NULL)待摘结点链表不为空
{
r=q->next;中间指针指向待摘结点表头的后继
q->next=p;当前摘下结点指向第一个结点
p=q;第一个结点移到刚插入的结点
q=r;待摘结点指针后移
}
head->next=p;将表头结点和第一个结点链接起来