博客作业2---线性表

一、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.谈谈你对线性表的认识?

  • 线性表、包括顺序表和链表。顺序表里面元素的地址是连续的,链表里面节点的地址不是连续的,是通过指针连起来的。链表有利于保存数据,它的增加删除等操作会比较容易,而顺序表在查找指定位置的数据时更为方便。两种方法各有各的优势,要根据不同的题目再进行选择。

3.代码Git提交记录截图

posted @ 2018-03-25 16:18  oracler  阅读(305)  评论(4编辑  收藏  举报