没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
单链表逆序详解
1、具有链表头的单链表
一段单链表逆序的程序
typedef struct student
{
int number;
char name[20];
int score;
struct student *next;
}student;
student *reverse(student *stu)
{
student *p1,*p2,*p3;
if(stu == NULL ||stu->next == NULL)
return stu;
p1=stu->next;//p1 指向链表头节点的下一个节点
p2=p1->next;
p1->next=NULL;
while(p2)
{
p3=p2->next;
p2->next = p1;
p1=p2;
p2=p3;
}
printf("p1 = %d,next = %d ",p1->number,p1->next->number);
stu->next=p1;//将链表头节点指向 p1
return stu;
}
分析:
假设需要逆序的单链表为:
则逆序以后的链表为:
过程:
(1)取 p1 指向 header->nextp1=stu->next;
p2 保留 p1->nextp2=p1->next;
将 p1->next 置为 NULL,因为单链表逆序以后,当前的 p1 节点为尾节点
p1->next=NULL;
(2)取 p3 保留 p2->nextp3=p2->next;
将 p2 插入 p1 之前p2->next = p1;
p1 指向 p2 指向的节点p1=p2;
p2 指向 p3 指向的节点p2=p3;
循环一次修改以后的单链表如下:
剩余10页未读,继续阅读
资源评论
_suan
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功