线性表

一、PTA实验作业

1.题目1:6-2 线性表元素的区间删除

2. 设计思路

1、定义结构体S
2、为S申请内存
3、定义i,j=0,count=0
4、for i=0 to L->last
5、       if(L->Data[i]>minD && L->Data[i]<maxD)
6、               count++
7、       end if
8、       else
9、              S->Data[j++]=L->Data[i]
10、     end else
11、end for
12、S->Last=L->Last-count;
13、	return S;

3.代码截图

4.PTA提交列表说明


1、一开始我用的方法是找到区间内的数的同时移动数组,但这样在数据大的时候会运行超时
2、后来换了现在的方法,但是写的时候忘了给S申请内存,还有忘了count初始值要赋值为0

1.题目2:6-3 jmu-ds-链表倒数第m个数

2. 设计思路

1、定义结构体s,r;整数num
2、r=L;s=L;
3、for(int i=1  to  m
4、		r=r->next
5、end for
6、if(r==NULL) return -1
7、else
8、while(r)
9、		r=r->next;
10、		s=s->next;
11、end while
12、if(s存在)   num=s->data
13、返回num

3.代码截图

4.PTA提交列表说明


1、编译错误的原因我记不大清了,好像我一开始忘了让s,r指在L
2、后来我提交的时候答案部分正确,仔细看了题目后我发现我忘了判断r是否为空了
3、将r的判断加上后,我提交又错了,但还是部分正确,后来我发现s也要判断是否为空

1.题目3:7-1 两个有序链表序列的合并

2. 设计思路

一、创建函数
1、定义p,tem两个结构体,整数num
2、tem=L;
3、输入num
4、while(num大于0)
5、     p申请内存
6、     p的data等于num
7、     p->next=NULL
8、     tem->next=p
9、     tem=p
10、   输入num
11、end while

二、输出函数
1、定义结构体p
2、p=L->next
3、if(!p) 输出NULL
4、else 输出p->data
5、p=p->next
6、while(p)
7、    输出“空格 p->data”
8、    p=p->next
9、end while
10、end else

三、合并函数
1、定义结构体p1,p2,p3
2、p1=L1->next;  p2=L2->next;
3、L3=p3=L1;
4、while(p1&&p2)
5、    if(p1->data小于等于p2->data)
6、             p3->next=p1;   p3=p1;    p1=p1->next;
7、    else
8、            p3->next=p2;    p3=p2;    p2=p2->next;
9、end while
10、p3->next=p1?p1:p2;

3.代码截图



4.PTA提交列表说明


1、我一开始在合并函数中将L1或L2剩下的接上L3的方法并不是那样的,而是判断L1或L2存在,然后一个一个节点的接,但是这样会导致编译错误,我也搞不懂为什么,去百度,发现有种写法是如上所示,十分简洁,我就采用了那种方法

二、截图本周题目集的PTA最后排名

1.顺序表PTA排名

2.链表PTA排名

3.我的总分:176

三、本周学习总结

1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?

  • 1、我周一到周五课比较多,所以尽量拿出1-2小时学习数据结构,周末没安排就半个下午和半个晚上来敲代码
  • 2、我对自己的安排不够满意,因为链表对我来说有一定难度,我这样的时间安排还是不够
  • 3、我会尽量延长学习的时间来更好地弄懂链表及接下来的内容

2.谈谈你对线性表的认识?

  • 线性表应该是较简单的数据结构(与接下来的内容相比,虽然链表我觉得也很难= =),线性表的基本操作应包括创建线性表,销毁线性表及插入,删除,求长度等等
  • 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的

3.代码Git提交记录截图

posted @ 2018-03-25 21:56  网络1711王艺斌  阅读(227)  评论(2编辑  收藏  举报