一、PTA实验作业(5分)
1.题目1: jmu-ds- 顺序表删除重复元素
2. 设计思路(伪代码或流程图)
定义循环变量i,j,k
for i=0 to L->length-1
当k<=j并且前后数据不相同时执行循环k++
当遇到前后数据相同时跳出循环,将不重复的数据放在前面,如果前面都没有重复的就不移动,
end for
将顺序表的长度改为前面没有重复的数字个数
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.PTA提交列表说明。
初时没有考虑到空表,后来进行条件限定,
1.题目2:集合的基本运算(单链表)
2. 设计思路(伪代码或流程图)
1. 对链表进行排序
构造一个只含数据节点的链表
q保存p节点后继节点的指针q=p->next
从链表头开始比较pre指向插入p的前驱节点
当链表满足有序,且不为空时将pre往后移
遇到乱序时,将小的节点后继节点指向大的节点,pre后继节点改为小的节点,p节点后移p=q,
2. 链表的合并
创建hc并分配空间
扫描ha和hb两个链表节点
当ha的节点数据小于hb的节点数据时将ha的节点数据插入带hc中并ha后移一个节点
当ha的节点数据大于hb的节点数据时将hb的节点数据插入带hc中并hb后移一个节点
当ha的节点数据等于hb的节点数据时将hb的节点数据插入带hc中并ha和hb一起后移一个节点
扫描完毕后判断ha,hb是否已经扫描到了最后一个节点
没有的话将没有扫描的剩余的链表数据导入到hc中
3.链表的交集
扫描链表ha和hb,遇到ha,hb的数据节点相同的就插入到hc中
由于数据是按递增排序的
若ha的数据小于hb将ha后移
若ha的数据大于hb将hb后移
4.链表的差集
由于数据是递增储存的
若ha的数据小于hb的数据,将ha数据插入hc中并将ha后移
若ha的数据大于hb的数据,将hb后移
若两数据节点数据相等,则都后移一位
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.PTA提交列表说明。
一次性过没有一点毛病老铁
1.题目3 两个有序序列的中位数
2. 设计思路(伪代码或流程图)
用第二题的方法将两链表合并后中位数的节点就为链表总节点除2
定义i作为循环变量
在展示函数中扫描链表并将i++
当i等于中位数所在节点序号时进行输出
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.PTA提交列表说明。
由于没有将typedef char ElemType; 改为typedef int ElemType; 导致在最大N和最小N时答案错误
二、截图本周题目集的PTA最后排名(3分)
1.顺序表PTA排名
2.链表PTA排名
3.我的总分: 215
三、本周学习总结(2分)
1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?(1分)
没课的时候在图书馆花点时间看数据结构书 , 还可以,比较满意
2.谈谈你对线性表的认识?(1分)
线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。
小节内容: 顺序表 :元素的个数就是顺序表的长度,查找元素直接用下标来寻找时间复杂度为O(1)
访问节点和增加节点时间复杂度为O(1),O(n) , 元素的插入和元素的删除通过移动顺序表实现
链表 : 删除节点需要每个节点挨个删除,非顺序储存,查找需要扫描链表,插入元素分为头插法和尾插法,头插法可以将数据逆序,元素删除遵循先接后删 ,插入遵循先连后断
3.代码Git提交记录截图
四、阅读代码(选做,加1分)