一、PTA实验作业
1.题目1:6-2 线性表元素的区间删除
2. 设计思路
定义i,j两个循环变量
for i=0 to i<=L->last 遍历循序表
if(L->Data[i]>=maxD||L->Data[i]<=minD)
则重构数组,L->Data[j]=L->Data[i]
j++
end for
L->Last=j-1
返回L
3.代码截图
4.PTA提交列表说明
- 1.函数结尾漏掉了对L->last的赋值。解决方法:补上L->Last=j-1。
- 2.对L->last的概念没有很清晰,所以在遍历循序表时,上下限没有设置好。解决方法:在循环中的上限改为i<=L->last。
1.题目2:6-3 jmu-ds-链表倒数第m个数
2. 设计思路
定义整型变量j=1,num,结构体指针p=L->next,q=L->next
if(m==0)
return -1
while(j<=m)
让q指针移动m次
end
while(q)
两个指针再同时移动。
end
return p->data就是链表倒数第m个数。
3.代码截图
4.PTA提交列表说明
- 1.对m=0的情况没有判断。解决方法:加if(m==0) return -1
1.题目3:7-2 一元多项式的乘法与加法运算
2. 设计思路
void PolynomeCreate
构造数组多项式a[ex] = co;ex指数,co为系数
void Multiply
定义product[2*MAX]={0};先让所有多项式系数为0
for( int i=MAX ; i>=0 ; i-- )
if( b[i] ){
for( int u=MAX ; u>=0 ; u-- )
if(a[u])
product[i+u] += a[u]*b[i];在指数相乘的情况时,再同指数的数系数相加。
end for
end for
for i=2*max-1 to 0
输出
end for
在循环中利用flag来判断不同情况的输出。
void Addition
for i=max to 0
将同指数的多项式系数相加。
end for
3.代码截图
4.PTA提交列表说明
- 1.用链表的方式在处理多项式乘法时不好处理,所以后来改成数组,比较巧妙的把系数和指数用数组表示。
二、截图本周题目集的PTA最后排名
1.顺序表PTA排名
2.链表PTA排名
3.我的总分:245
三、本周学习总结
1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?(1分)
- 一边做题目,一边学习各种函数的表达。不是很满意,感觉学习的内容不够牢固且课本没有全面认真的看过。下次敲代码之前,做好预习工作。
2.谈谈你对线性表的认识?
- 线性表、包括顺序表和链表。顺序表里面元素的地址是连续的,链表里面节点的地址不是连续的,是通过指针连起来的。链表有利于保存数据,它的增加删除等操作会比较容易,而顺序表在查找指定位置的数据时更为方便。两种方法各有各的优势,要根据不同的题目再进行选择。