一.作业题目:线性表

本道题目我曾经专门写过一次博客园

在这不再多详述,那次的博客:线性表的删除(超链接)

作业题目2:单链表

1.思考:

这题难点在于要写多个函数代码量比较高需要慢慢的对每个函数进行测试,

不然一堆函数进行测试错误太多不好找。

 2.设计思路

(1)排序用冒泡简单。

(2)并集用二路归并好。

(3)交集也可利用归并思想。

(4)差集有点坑,竟然是用A的集和减去交集的。

3.代码截图

4.PTA提交列表说明。

前面就是给差集坑到了,导致一直错。

作业题目3:有序表

  1.思考:

  这题是我在这次第二次PTA作业中思考也是卡了最久的一题一开始不是很清楚多项式如何进行相除,

还特意去学习了一下,并对题目中的样例进行了计算。

 2.设计思路

(1)利用Create函数创建4个链表,分别代表除数,被除数,商以及余

(2)每一步将被除数最高项除以除数最高项,所得结果存入L3(商)中。

(3)然后用所得的结果乘以除数,将被除数减去乘出来的结果,减出来的结果把被除数更新

(4)直到被除数的最高项数小于除数的最高项,剩下的为商。

此题我写的核心算法是除法以及减法函数,用伪代码表示:

void DividePoly(Polynomial &L1,Polynomial L2,Polynomial &L3,Polynomial &L4)
{
    if L为空 return;
    Polynomial r3=L3,P,p1=L1->next,p2=L2->next,p,temp,t;
    创造P
    p代表P尾
    L3->expon=0;
    while 只要p1的指数大于p2的指数进入循环
    {    if p1的系数/p2的系数不为0
            结果添加进商链表
        while p2 不为空
            算出除数和商之积的多项式
        L1和p相减(函数),更新L1
        摧毁P(函数)
        p1向后挪
        if p1为空 break;
        p=P重新指回P
        p2向后挪
         }
    r3=L3;
    剩余的给temp
    L4后为temp
}

 

3.代码截图

 

4.PTA提交列表说明。

刚做出来只有15分也就是只有样例对了,之后按着错一个一个区改正又改出了两个达到了19分,最后有两个错误点实在

找不出来,去问问同学,还参考了下百度的算法,最终才能成功。

sample等价, 输入有0项, 输出有舍入0项

答案正确

1    输入输出都产生了0

输入输出有多个0项, 余为零

2  要注意商为0时的输出

很高阶随机系数的B, 商为零

3   一步抵消,我一直没弄清楚,明明结果都对,最后发现对一些特别的情况有要求

A,B同阶, 多项一步抵消

4   输入不为0多项式,但计算出来的的结果都为0

输出全为舍入0

二、截图本周题目集的PTA最后排名

本次2个题目集总分:290分

1.顺序表PTA排名

 

 

2.链表PTA排名

 

3.我的总分:290

折算成平时分:3分

三、本周学习总结

1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?

本周数据结构课程还算满意,就是有时候打代码效率不够高,像多项式删除那题从下午打到大晚上的,

链表的11题代码都花了快一个星期的时间完成。确实有点儿慢了。

希望今后能够和其他同学多交流多学习新的算法,提高自己的效率。

2.谈谈你对线性表的认识?

我认为吧线性表应该算是比较简单的数据结构,从我对后面的知识有了一点接触,发现线性表与后面比

会简单点。线性表除第一个和最后一个数据元素之外,线性表主要是数据元素都是首尾相接的,当然除了,

循环式的,都是一个针对一个。因为我们只是在逻辑上讨论线性表,所以双向链表也是线性的。

(1)顺序表,主要是利用数组来存储,算法比较简单

(2)链表,链式结构的存储更考验逻辑的严密以及分析,虽然比顺序表难了,但是优势是十分动态

删除和插入确实比数组简单好上许多。

3.代码Git提交记录截图

 

 

 
posted on 2018-03-24 20:53  阙广壬辰  阅读(351)  评论(4编辑  收藏  举报