一、PTA实验作业(5分)
1.题目1:7-1 最长连续递增子序列
2. 设计思路(伪代码或流程图)
定义 a[],b[],a放元素,b放递增序列长度
将元素放入数组a中;
for(i=0,j=0;i<n-1;i++)
{//找连续递增序列
if(a[i]<a[i+1])
b[j]++;//将递增序列长度放入b数组中
else
j=i+1;//一旦不连续,j=i+1,j记录该序列的开头下标计算第二个递增序列长度
}
for(i=0;i<n;i++)
if(max<b[i])
{
max=b[i];
j=i;
}//用循环找出最大的递增序列长度,并记录该序列开头下标
用循环输出该段序列
for(i=j;i<max-1;i++)
3.代码截图
4.PTA提交列表说明。
刚开始用链表做,一直过不了,后来改成数组就比较明朗了,但是思路没变,可能链表用的还是不熟练
1.题目2:6-4 集合的基本运算(单链表)
2. 设计思路(伪代码或流程图)
排序:
p=L->next->next//p保留链表
L->next->next=NULL;//保留第一个数据,重构链表
while(p不为空)
{
q为p的后继
pre为L的工作指针
在新表L中找到比p所指的更大的元素
用头插法插入新表中即pre所指的链表
}
并集:
pa指向ha链表, pb指向hb链表
新建表hc,r为hc的工作指针
while(pa,pb不为空)
{
if pa元素<pb元素
将pa元素赋到hc中
pa后移
else pa元素>pb元素
将pb元素赋到hc中
pb后移
else(相等)
将pb元素赋到hc中
pa,pb同时后移
}
如果pa剩余,将pa剩下的元素全赋给hc
如果pb剩余,将pb剩下的元素全赋给hc
交集:
pa指向ha链表, pb指向hb链表
新建表hc,r为hc的工作指针
while(pa不为空)
{
每次都将pb指向开头
while(pb不为空)
{
if pa元素=pb元素
{
将pb元素赋到hc中
跳出循环}
else pb后移
}
pa后移
}
hc链尾置空
差集:
pa指向ha链表, pb指向hb链表
pc=hc=ha//pc为hc工作指针,同时hc利用ha的链表
while(pa,pb不为空)
{
if(pa元素<pb元素)
pc指向pa所指的元素,同时pa后移
else if pa元素>pb元素
pb后移
else//相等
{
将pc的后继改为pa的后继
pa 后移
}
3.代码截图
4.PTA提交列表说明。
建表时,指针忘了初始化
1.题目3:7-3 两个有序序列的中位数
2. 设计思路(伪代码或流程图)
中位数:
pa指向ha链表, pb指向hb链表
int i存放新的有序表元素位置
while(pa,pb不为空)
{
if pa元素< pb元素
将pa元素赋给s,i++;
else
将pb元素赋给s,i++;
if i此时为中位数//i==(2n+1)+2
{
输出此时s指向元素的值
跳出循环
}
}
3.代码截图
4.PTA提交列表说明。
题目编译器忘改了
二、截图本周题目集的PTA最后排名(3分)
本次2个题目集总分:295分
1.顺序表PTA排名
黄炳炜
2.链表PTA排名
黄炳炜
3.我的总分:
245
三、本周学习总结(2分)
1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?(1分)
安排内容:学习时间安排、编程时间安排、不懂问题是哪种方式交流?
晚自修看书阅读代码,回宿舍后开始打代码,遇到不会的,先百度,再问同学,实在不行再请教老师
目前还算满意这种方式
2.谈谈你对线性表的认识?(1分)
线性表就是用来存放一串元素,可以对这串元素进行增删改,线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的
线性表的顺序存储结构,指定的是用一段地址连续的存储单元一次存储线性表的数据元素。
线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。
3.代码Git提交记录截图