博客作业2---线性表
一、PTA实验作业
1.题目1:
6-2 线性表元素的区间删除
2. 设计思路
定义整型变量i,j,k,count
定义一个数组a[MAXSIZE]
for i=0 to i小于等于L->Last
如果L->data[i]不在minD和maxD这个区间内的元素,则保存到数组中,count++
i++
end for
for k=0 to k小于count
将数组中的数值赋值到线性表
end for
记下线性表中最后一个元素的位置
3.代码截图
4.PTA提交列表说明。
前面几次写代码的时候,没用数组,自己的思路也有问题,提交测试点一直是段错误,后来实在不会,就用数组来辅助
1.题目2:
集合的基本运算(单链表)
2. 设计思路
并集:
定义指针p指向带头节点的单链表ha的第一个元素,定义指针q指向带头节点的单链表hb的第一个元素,定义指针r,s用尾插法构造新的链表
为新链表hc申请空间
while(p并且q都不为空)
将p、q进行比较,按递增的顺序将它们合并到新链表中
while(p不为空)
将剩下的元素一个一个接入到新链表中
while(q不为空)
将剩下的元素一个一个接入到新链表中
交集
定义指针p指向带头节点的单链表ha的第一个元素,定义指针q指向带头节点的单链表hb的第一个元素,定义指针r,s用尾插法构造新的链表
为新链表hc申请空间
while(p不为空)
q指向hb的第一个元素
while q的元素小于p的元素并且q不为空
q移到下一个元素
if q不为空并且p、q的元素相等
将这个元素插入新链表中
p移动到下一个元素
差集
定义指针p指向带头节点的单链表ha的第一个元素,定义指针q指向带头节点的单链表hb的第一个元素,定义指针r,s用尾插法构造新的链表
为新链表hc申请空间
while(p不为空)
q指向hb的第一个元素
while q的元素小于p的元素并且q不为空
q移到下一个元素
if q为空并且p、q的元素不相等
将p这个元素插入新链表中
p移动到下一个元素
3.代码截图
4.PTA提交列表说明。
销毁函数写错了,非法越界,而自己一直以为是差集跟交集的函数错了,找了好久都找不出错误,最后同学帮忙找出了错误。
修改完之后没注意到前一次代码的括号没删完,导致了编译错误
1.题目3:
7-1 两个有序链表序列的合并
2. 设计思路
建立链表
为L申请空间,定义指针r、s用尾插法构造新的链表
定义一个ElemType类型的变量x
输入x的值,
while(x>0)
用尾插法将这个元素插入到链表中
继续读入x的值
当不满足条件时,结束while
合并
定义指针p指向带头节点的单链表ha的第一个元素,定义指针q指向带头节点的单链表hb的第一个元素,定义指针r,s用尾插法构造新的链表
为新链表hc申请空间
while(p并且q都不为空)
将p、q进行比较,按递增的顺序将它们合并到新链表中
while(p不为空)
将剩下的元素一个一个接入到新链表中
while(q不为空)
将剩下的元素一个一个接入到新链表中
3.代码截图
4.PTA提交列表说明。
第一次提交忘了改编译器
第二、三次提交,链表空时,段错误,又是销毁的出错,非法越界了,跟前一题一样
后面提交的,输入时的判断条件错误,写成x!=-1,有并列数字时错误,并列数字也要全部插进去
二、截图本周题目集的PTA最后排名
1.顺序表PTA排名
2.链表PTA排名
3.我的总分:
245
三、本周学习总结
1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?
有空的时候就写写pta,预习的时候主要看视频,书比较少翻,只有在自己打代码不懂的时候,才会翻书看,
不太满意,觉得自己还是要平时的时候多看看书上的代码,加深自己的印象,在写代码的时候做到尽量少翻书
2.谈谈你对线性表的认识?
线性表的存储结构有两种:顺序和链表
顺序表元素的地址是连续的,
链表节点的地址不是连续的,是靠指针连起来的
顺序表在查找数据的时候会比较方便,而链表在增加和删除的时候,步骤会比顺序表的简单
线性表除第一个元素外,其他每一个元素有且仅有一个直接前驱,除最后一个元素外,其他每一个元素有且仅有一个直接后继
3.代码Git提交记录截图
四、阅读代码
(此代码的网址)
https://gitee.com/adressad/codes/xlqmk8dc1750s2nh3j4vp67
该段代码的主要作用是判断我们输入的密码是否足够安全,用c1、c2、c3、c4分别代表4个不同种类的密码元素,当元素种类小于3的时候,就说明密码的安全系数不够高,当元素种类大于等于3时,说明密码的安全系数够了