博客作业2---线性表
一、PTA实验作业
题目1:6-2 线性表元素的区间删除
2. 设计思路
定义变量i表示第i个字符,len记录删除的个数
for i=0 to L->Last {
if(第i个数<=minD||第i个数>=maxD){
删除区间内的数
len++
}
}
L->Last=--len
返回L
3.代码截图
4.PTA提交列表情况说明
之前一直用的两层循环,时间复杂度超过题目,运行超时
题目2:6-2 jmu-ds-单链表逆置
2. 设计思路
1.尾插法建立新链表
分配内存
定义变量i计数,数组a[1000],结构指针*s插入新节点,*r存放尾节点
创建链表
if(n>0) {
for i=0 to n {
输入数据存放在数组中
建立新的链表s
s->data=a[i];
把s存入r
}
尾节点为NULL
}
else
L->next为NULL
}
2.单链表逆置
定义结构指针p插入新节点,q存放逆置的节点
p=L->next;
while(p) { 把p插入q所指的逆序链表
q=p;
p=p->next;
q->next=L->next;
L->next=q;
}
3.输出链表
定义结构指针p,p=L->next;
如果链表为空,输出NULL
否则 先输出第一个数据,指针后移
while(p!=NULL) {
输出空格和下一个数据
}
3.代码截图
4.PTA提交列表情况说明
题目3:7-1 两个有序链表序列的合并
2. 设计思路
头文件,建立链表,建立相应结构体
1.主函数
定义链表s1,s2存放输入的数据,s3存放合并后的数据
输入数据
合并链表
输出合并后的链表
2.建立链表L,if(!L),返回NULL,L->next=NULL,返回L
3.定义data表示数据,输入数据
while(data >0 ) {
建立新链表temp
if(!temp),返回NULL
把data存放在temp->data中
继续输入数据data
}
4.连接合并链表
while(s1!=NULL&&s2!=NULL) {
if(s1的值大于s2的值) 把s2插入s3中,s2指向后一位
else 把s1插入s3中,s1指向后一位
s3指向下一位
if(s1,s2为空) 返回s3
if(s1为空) 把s1插入s3
else 把s2插入s3
5.输出合并后的链表
if(L为空) 输出NULL
else while(L不为空) {
输出L的值,L指向后一位
}
3.代码截图
4.PTA提交列表情况说明。
二、截图本周题目集的PTA最后排名。
我的总分:2分
三、本周学习总结
1.1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?
本学期开始,伴随着包括数据结构,大学物理等很多重要课程的学习,学习难度也在上升,就我目前的表现看并没有确切实现上学期期末的规划,遇见问题也并没有及时的去群里面询问,已经过了快一个月了,必须跟上现在的学习进度。
2.谈谈你对线性表的认识?
线性表有链表和顺序表。链表在插入、删除元素时只需对单个结点进行操作,不必移动元素;顺序表对数据的访问便捷,不会因为未表示表中元素逻辑关系而占用内存。