第02次作业-线性表
一、PTA实验作业
本周要求挑3道题目写设计思路、调试过程。设计思路用伪代码描述。题目选做要求:
1.顺序表选择一题(6-2,6-3,7-1选一题),代码必须用顺序结构抽象数据类型封装
2.单链表选择一题(6-1不能选)
3.有序表选择一题
1.题目
1.6-2 线性表元素的区间删除
2. 6-3 jmu-ds-链表倒数第m个数.
3. 7-3 两个有序序列的中位数
2. 设计思路(伪代码或流程图)
1. 6-2 线性表元素的区间删除
定义变量j number用来计数
If(最小值>=最大值||L为空)
Return
For j=0 to L->Last
If(在区间内)
Number++
Else
删除此时的值
L->Last-==number //指针跳回表头
return
2. 6-3 jmu-ds-链表倒数第m个数.
定义变量 i 用来计数
定义指针 j k 来存放头结点
If(m为正数)
for i=1 to m
{if(j)
j指向下一个结点
else break;
}
End for
Else return -1 //m<=0返回-1
If(j==NULL) return -1 //j指向结尾,说明m值过大,返回-1
K=k->next;
While(j->next) //链表没有指到结尾
j&&k都指向下一结点
return k->data //返回倒数第m个数的值
3. 7-3 两个有序序列的中位数.
定义A[]存放数字,2*x表示需要输入的个数,i用来计数
For i=0 to 2*x
输入两个有序序列
Sort(A,A+2*x) //给所有元素进行排序
Prinf A[x-1] //输出中位数
3,代码截图
1. 6-2 线性表元素的区间删除
2.6-3 jmu-ds-链表倒数第m个数
3.7-3 两个有序序列的中位数
.
4.PTA提交列表说明
1. 6-2 线性表元素的区间删除
错误点:发现判断不在区间内了后删除的不是想要删掉的那个数,导致出现错误
解决方法:通过反复调试后终于删除了想删的那个数,并通过了测试点。
2.6-3 jmu-ds-链表倒数第m个数
错误点:一开始在想定义的那两个链表,第一个链表移动完,第二个链表从后面开始向前移动相同的次数,结果死活不对 (;¬_¬)
解决方法:后来看了群上大佬的做法,第一个链表移动完,第二个链表移动(length-m)次,最终得到了正确的答案
3. 7-3 两个有序序列的中位数.
错误点:编译完发现无法得到中位数或直接得不出答案
解决方法:请教同学后发现存在sort函数可以直接对两个序列进行排序,这时直接取中间的值即是中位数。
二、截图本周题目集的PTA最后排名
本次2个题目集总分:290分
1.顺序表PTA排名
2.链表PTA排名
3.我的总分
总分:2
三、本周学习总结
1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?
学习时间安排:晚自修或空闲时间花时间来学习数据结构.
不满意,应该多与同学一起交流讨论,而不是自己埋头写。
2.谈谈你对线性表的认识?
主观认识:线性表是一种数据结构,可以在任意位置插入删除
具体总结:线性表一种逻辑结构,相同数据类型的n个数据元素的有限序列,除第一个元素外,每个元素有且仅有一个直接前驱,除最后一个元素外,每个元素有且仅有一个直接后继。
线性表是逻辑结构,顺序表和链表是存储结构。
3.代码Git提交记录截图
在码云的项目中,依次选择统计-Commits历史-设置时间段,进行搜索并截图,如下图所示,需要出现学号、项目提交说明。请在码云中将你的昵称改为“学号-姓名”。