链表反转
2016-05-19 21:07
155 查看
题目链接
PAT提交结果
PAT提交代码
github链接
先构造一个结构体,内有成员
创建头指针,输入数据,按照输入的数据,新建结点,先把输入的结点构成一个链表。特别注意:由于输入数据的次数可能较多,为了避免超时,建议用
把所成的链表结点按照地址进行排序。
特别注意:由于输入的结点可能会有不满足要求的,应把它们移除链表,即结点的
根据
反转后,再把各结点的
最后输出各个节点。特别注意:由于输入的地址是五位整型数,所以如果地址的有效数字的位数比五小,就会使输出的地址与原来不同。
比如:输入
可以用
在使用指针时,如果一个指针被多次使用,在使用前,一定要把指针重新指向。
在搜索结点时,一定要记住加上指针的后移操作。
PAT提交结果
PAT提交代码
github链接
主要步骤以及特别注意事项:
先构造一个结构体,内有成员
address、
data、
nextad,分别代表当前结点的地址,结点存储的数据,和下一个结点的地址。
创建头指针,输入数据,按照输入的数据,新建结点,先把输入的结点构成一个链表。特别注意:由于输入数据的次数可能较多,为了避免超时,建议用
scanf输入。
把所成的链表结点按照地址进行排序。
特别注意:由于输入的结点可能会有不满足要求的,应把它们移除链表,即结点的
nextad如果是
-1,那么它的下一个应指向
NULL。
根据
k的大小,对链表进行反转。
反转后,再把各结点的
nextad进行重新赋值,使其等于下一个结点的
address。特别注意:最后一个节点的
nextad应该设为
-1。
最后输出各个节点。特别注意:由于输入的地址是五位整型数,所以如果地址的有效数字的位数比五小,就会使输出的地址与原来不同。
比如:输入
00001 123 03241,那么输出就会变成
1 123 3241,就会出错。应该在输出时控制输出的宽度为五位,并且不足的要补
0。
可以用
cout<<setfill('0')<<setw(5)<<地址来实现,要记得加上
#include<iomanip>。但是最后一个地址
-1应该单独输出,不必补
0。
补充:
在使用指针时,如果一个指针被多次使用,在使用前,一定要把指针重新指向。
在搜索结点时,一定要记住加上指针的后移操作。
相关文章推荐
- 第12周项目1-实现复数类中的运算符重载
- oracle sql学习三
- poj-2960 S-Nim
- 高精度乘法
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- Hibernate初体验及简单错误排除
- 利用UDPSocket模拟一次对话,只能运行依次,多次执行还在测试中.跪求大神建议....
- Hibernate初体验及简单错误排除
- 基于FS4412嵌入式系统移植(3) eMMC加载系统启动linux体验
- linux 中大小端问题 详解
- 大数加法 及 乘法
- 二叉排序树(BSTree)关于查找算法结合
- ArrayList和LikendList
- 找水王01
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层