博客作业2---线性表
一、PTA实验作业(5分)
1.题目1:6-3 jmu-ds- 顺序表删除重复元素
2. 设计思路(伪代码或流程图)
1.(创建顺序表函数)使用new函数创建新链表L,定义循环变量 i ;
2. for i=0 to n {
数组a【i】的元素赋值到顺序表中;
}
3.将顺序表长度length赋值为n;
1.(删除顺序表重复元素)定义循环变量 i, j, k;
2. for i=0 to n {
3. for j=i+1 to n{多重循环找重复元素
4. if( i 和 j 指向的元素重复){
for k=j to n-1 {
5. 从左向右移动来删除重复的元素;
}
6. L的长度减一;
}
}
}
7.如果顺序表的长度为2 ,却有重复元素,L->length--;
1.(输出顺序表)定义循环变量 i;
2. 如果循序表长度大于0
for i=0 to L->length-1 {
输出L->data [i];输出空格;
3.输出最后一个元素,不加空格
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.PTA提交列表说明。
问题:
- 一开始我的长度length的值不是直接赋为n,而是通过每一次循环递增,同时初值赋为了-1,所以这样加加减减中就是长度值出错了。解决这个问题是我通过调试,调了挺久才发现这个问题,就改了直接赋为n。
- 还有一个问题是当长度为2 时有重复,我的函数无法解决这个问题,所以再添了一个if一句判断重复与否及删除。
1.题目2:6-2 jmu-ds-单链表逆置
2. 设计思路(伪代码或流程图)
1.(创建链表不说)
1.(链表逆置)定义小指针 s,r。r 指向链表 L的next。
2.如果L为空表,输出NULL。
3.否则 {
s指向 r 的next;
while(s 的next 域不为NULL){
r 的next 指向再下一个。
将小指针 s 指向的节点接到 L 的头结点后面。
小指针 s 重新指向 r 的next。
}
4.当r的next域指向NULL,重复上一个步骤但是小指针 s 不必再指向 r 的next。
1.(输出链表)不说
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.PTA提交列表说明。
问题:
- 一开始,创建链表的写法出错,在创建过程中把指向头结点的 L 大指针拿来移动,于是在后来的函数中,我定义的小指针就找不到头结点的位置,通过使用多条输出语句来调试,发现了这个问题,就添加了一个小指针 p 在创建链表函数里。
- 第二次没有全对是因为输出函数多写了一句 p=p->next.
1.题目3:7-1 两个有序链表序列的合并
2. 设计思路(伪代码或流程图)
1.(主函数)定义链表 L, P, T;
2. 创建链表 一个L,一个P;
3.合并链表
4.输出链表
1.(创建链表)开辟L的空间,并且next指向NULL;定义小指针 s, p; p=L;定义循环变量 i;
2.for i=0 to 未知{
开辟小指针 s 的空间,next 指向NULL;
3. 输入 s->data ;
4. 如果输入数值为-1 退出;
5. 将小指针 s 挂到 L 链表上(通过p)
}
1.(合并链表)定义三个小指针 l, p ,t;为合并成的新链表T开辟空间,next指向NULL;
2.小指针 l, p,分别指向链表 L,P的next。小指针 t 指向T;
3.while(两个小指针 l,p 还没有指向NULL) {
比较两个小指针的大小,并将较小值赋给 t。
t=t->next;
}
4.当其中一个链表已经比较完,将另一个链表的剩下值赋给小指针 t。
1.(输出链表)定义小指针 r; r=T->next;
2.如果链表为空,输出NULL;
3.否则while(r->next!=NULL){
输出r->data;输出空格;r指向next;
}
4.输出最后一个数,不加空格;
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.PTA提交列表说明。
问题:
- 编译错误是一些用错编译器,少了符号等小错误。
- 一个错误是在输出函数有一个链表为空时输出NULL没写,差了一分。
题目2,3同题目1
二、截图本周题目集的PTA最后排名(3分)
1.顺序表PTA排名
2.链表PTA排名
3.我的总分:
205
三、本周学习总结(2分)
1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?(1分)
- 这一周在数据结构的时间上花了挺多的,但是我的安排不合理,我在周末两天内一口气打pta,这没给我带来学习效益,所以希望以后还是尽量课前预习,课后复习打pta这样。我这周遇到问题一般是自己调试解决,以后多向别人或者群里问问。
安排内容:学习时间安排、编程时间安排、不懂问题是哪种方式交流?
2.谈谈你对线性表的认识?(1分)
- 线性表是一种常用的数据结构,常见用顺序表和链表,数据之间的关系是一对一的关系,并且首尾相连。
3.代码Git提交记录截图
在码云的项目中,依次选择统计-Commits历史-设置时间段,进行搜索并截图,如下图所示,需要出现学号、项目提交说明。请在码云中将你的昵称改为“学号-姓名”。
注意:一个合理的项目提交应包含多次提交记录,请务必一开始就使用Git管理你的代码。
Git使用方法:Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)
四、阅读代码(选做,加1分)
君霞的代码,她的代码用的是数组,链接关系我觉得比我更明晰一点,代码也比我的的更短。