博客作业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提交记录截图

不好意思还没有去弄,我会尽快去弄的到时候把截图补齐。

posted @ 2018-03-25 22:50  z&jack  阅读(286)  评论(2编辑  收藏  举报