博客作业2---线性表
一、PTA实验作业
1. 顺序表删除重复元素
2.设计思路
建表:如果输入个数为0直接退出程序;否则把每一个a[i]赋值给L->data,最后给长度赋值n
展示:
for i=0 to L->length-1{
if 最尾部的数{
输出L->data[i]
}
else{
输出L->data[i]和" "
}
}
删除相同元素:
for i=1 to L->length-1{
k=0;
while(k<=j且两个data不相同){
k自增;
}
if(k>j) 把L->data[i]改值为L->data[++j]
}
长度重新定义为j+1
3.代码截图
4.PTA提交列表说明。
- 0分的答案错误是输出的结果是3个乱码,输出的结果完全错误,认真再看一遍书本发现建表函数中并没有把输入的内容接到链表上而只是简单的给L申请空间和给L->length赋值
- 第二个错误是空表的情况,没有做特殊情况考虑,如果是空表让程序直接退出
1. 单链表逆置
2.设计思路
建表:
为L申请空间
L->next置空
p保存头指针L
for i=1 to n{
为s申请空间
输入k赋值给s->data
用尾插法将s节点插入p之后
}
倒置:
p保留L->next
L->next 置空重构链表
while(!p){
头插法重构
}
输出:
除最后一个元素外其他其他于是输出带空格
3.代码截图
4.PTA提交列表说明。
上课老师有说过类似题目
1. 两个有序链表序列的合并
2.设计思路
建表:
尾插法建表
合并:
p1=l1->next;
p2=l2->next;
p=L;
while(p1和p2都没有指向NULL){
if(p1->data<p2->data){
s->data= p1->data
尾插法把s节点插入p之后
p1下移
}
else{
s->data= p2->data
尾插法把s节点插入p之后
p2下移
}
}
while(p1){
把剩下的元素节点依次接入p
}
while(p2){
把剩下的元素节点依次接入p
}
p->next=NULL;
输出:
除最后一个元素外其他其他于是输出带空格
3.代码截图
4.PTA提交列表说明。
第一次错误10分,只有样例正确,3个测试点错误,链表为空也没有考虑,然后就是有并列,我仔细再看一遍题目发现题目要求是把两个链表合并,并不用删掉重复元素,去掉删除函数。
还有就是大规模输入,自己不懂错误在哪 ,尝试这把两个数组的长度加大也没有用
二、截图本周题目集的PTA最后排名
1.顺序表PTA排名
2.链表PTA排名
3.我的总分:
- 155
三、本周学习总结
1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?
计划是要从周一开始每天拨出一点时间做一题pta哪怕是一个函数也好,可是每天只有晚上有时间,而晚上还要晚自习,也有其他作业要写,所以只是再周三写了一点pta,其他的基本再周末做的,总感觉时间没有规划好。不是很满意。下周尽量能够再晚上之前把其他作业做完,然后选择性完成pta内容
2.谈谈你对线性表的认识
- 线性表是由0个或多个元素的有穷序列,其特点操作灵活,其长度可以增长缩短
- 线性表具有均匀性和有序性,均匀性表现在同一线性表的各个数据元素必定既有相同的数据类型和长度,有序性表现在各个数据在线性表都有自己的位置,而且数据之间的相对位置是线性
- 线性表根据存储结构 分成顺序表和列表,在元素插入,删除,排序方面各有各的特点