博客作业2---线性表
一、PTA实验作业(5分)
本周要求挑3道题目写设计思路、调试过程。设计思路用伪代码描述。题目选做要求:
6-3 jmu-ds- 顺序表删除重复元素
void CreateSqList(List &L,int a[],int n){//创建顺序表
L=new SqList;
L->length=-1;
int i=0;
for(i=0;i<n;i++){
L->data[i]=a[i];
L->length++;
}
}
void DispSqList(List L){//输出顺序表
int i;
for (i=0;i<=L->length;i++){
cout<<L->data[i];
if(i<L->length) cout<<" ";
}
}
void DelSameNode(List &L){//删除顺序表重复元素
int i,j,k=1,cnt=0;
for(i=0;i<=L->length;i++){
cnt=0;//cnt记录每次遍历与i相同的数
k=i+1;//
for(j=i+1;j<=L->length;j++){//遍历i以后的数
if(L->data[i]!=L->data[j]){//如果在i以后的数与i不相等
L->data[k]=L->data[j];就重建顺序表
k++;
}
else cnt++;//否则,记录相同的个数
}
L->length-=cnt; length用来记录新顺序表的长度
}
}
2. 设计思路(伪代码或流程图)
定义变量i,j,k.i用来遍历整个大的顺序表,j是用来嵌套遍历,k是用来新建顺序表。
定义变量cnt ,用来记录每次遍历过程中与i相等的个数。
for i=0 to i=length
for j=i+1 to j=length
重构顺序表,删除与i相同的数。
length=length-cnt更新每次顺序表的长度。
end for
1.题目2:6-4 集合的基本运算(单链表)
2. 设计思路(伪代码或流程图)
求并集:
定义结构体指针 *pa,*pb,*r,*s;
pa表示L1链表,p2 表示L2链表
遍历 p1 p2链表
用二路归并发并用尾插发新建新表L。
求交集:
同样遍历L1,L2链表
寻找相同的数,在将这想同的数用尾插发插入L练表中。
求差集:
遍历链表L1,
因为两个链表已经通过sort函数排过序,
所以如果L2的第一个数大于L1中的前n个数,那么说明这n 个数都是差集。
以此类推,遍历L1链表寻找比L2对应的数小的数。
在用尾插发新建链表L
1.题目3:7-3 两个有序序列的中位数(25 分
2. 设计思路(伪代码或流程图)
定义一个n表示输入的公共长度,定义结构体指针,L1,L2,L,L用来表示合并后的新链表
<1>创建链表L1,L2。过程省略不详。
<2>合并链表 :定义结构体指针p1,p2,r,s。p1=L1,p2=L2
遍历链表用二路归并发,新建链表L。并定义一个j来记录新链表长度。
<3>寻找中位数:![](https://images2018.cnblogs.com/blog/1233828/201803/1233828-20180325221446243-267661662.png)
让n=j/2;
for i=0 to n
p=p->next;
寻找中位数,并返回p->data
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.PTA提交列表说明。
在空表的测评点上有错误,我忘记了,真的忘记了,还有一个是重复数据的错误,
这道题还有一个问题,我还没有解决
最后一个问题没有找到在哪里出错了,当初这道题编了很久,代码量又长,尤其是在sort哪个函数的地方,换了很多个思路
调试了很多次,没什么耐心了。还有一个我经常会犯的错误是在输出的地方先让p=L->next
在遍历链表的时候while(p->next)从而忽略了空表的情况,导致段错误。
同样这道题也是没有完全解决,不过大体的思路是出来了
不明白那个错误到底是什么意思,难道是没有考虑到首尾的临界条件?还需要老师给与一定的帮助。
二、截图本周题目集的PTA最后排名(3分)
两次的PTA总分为 201 分,嘻嘻嘻正好两分哦
三、本周学习总结(2分)
1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?(1分)
本周基本上晚上有时间的话都会固定的花一个多小时的时间打代码,和看数据结构的书,对自己的安排还算满意。
要改变的话,就是可以多花点时间看看慕课吧
2.谈谈你对线性表的认识?(1分)
首先我的认识在我的印象里,顺序表就像是数组,还有一个就是链表,我个人跟喜欢链表的使用,感觉链表的灵活性更高,
而在一些题目有用顺序表思路会更加清晰,比如说在求多项式导数那一题,我用链表的方式,却是会出现个别点的错误,
很容易出现断错误,而用数组来存放的话就更加的简单。
3.代码Git提交记录截图
不好意思还没有去弄,我会尽快去弄的到时候把截图补齐。