02-线性表

一、PTA实验作业

             1、题目1:最长连续递增子序列

 

             2、设计思路:#求最长递增子列

                                   定义变量i遍历顺序表

                                   定义变量place来记录子序列起始位置

                                   定义变量len来记录长度,置为1

                                   定义变量maxlen记录最长的长度

                                    定义变量maxplace来记录最长的长度的起始位置 

                                   while  i=0 to L->Last

                                        if  L->Data[i]>=L->Data[i+1]

                                              1、palce移到下一个元素  

                                              2、len置为1

                                              3、i加1

                                        else

                                               1、len加1

                                               2、i加1

                                        end if

                                        if  maxlen<len

                                               1、len赋给maxlen

                                                2、place赋给maxplace

                                        end if

                                    end while

                                    for  i=0 to maxlen-1 

                                           最长子序列依次赋值给L

                                     end for

                                     for  i=0 to maxlen-1

                                           if  i=0

                                               输出值

                                           else 

                                               输出空格加值

                                           end if

                                       end for

              3、代码截图

              

                         

              4、PTA提交列表说明

                      

 

                         1、用C提交出现了编译错误,后来改成了C++,出现段错误;

                         2、用嵌套for循环记录最大子序列出现了段错误,改进成一个for循环,提交后出现了编译错误;

                         3、寻找发现在依次赋值给L时,i<=maxlen,改为i<maxlen后提交正确。

            1、题目2:单链表逆置

             2、设计思路:#将链表L逆置

                                    定义指针结构变量p,q,p指向L的第一个数据节点

                                    if  p==NULL

                                        1、输出NULL                     

                                        2、retur;

                                     end if

                                     L->next置为空

                                     while  p!=NULL

                                               头插法,使其逆置

                                     end while

             3、代码截图

              

                         

         4、PTA提交列表说明

             

 

 

                               1、第一次提交编译错误,是输出函数结尾少了'}';

                               2、后面提交出现了段错误以及部分正确,主要错误就是:(1)创建函数在创建单链表时尾节点没有赋值为NULL;

                                                                                                                          (2)逆置函数使用头插法时while循环的条件使用错误;

                                                                                                                          (3) 输出函数判断单链表为NULL时,只输出而没有return。

               1、题目3:两个有序序列的中位数

         2、设计思路:#合并两个有序表

                                      定义指针结构变量r,始终指向S3尾节点,开始时指向头节点   

                                       S1和S2移到第一个数据节点

                                        while  S1和S2都不为NULL

                                                   if   S1的数据元素<=S2的数据元素   

                                                        1、r指向S1

                                                        2、S1指向下一个节点

                                                    else

                                                         1、r指向S2

 

                                                         2、S2指向下一个节点

                                                    end if

                                                    r指向下一个节点

                                         end while

                                         if   S1和S2都为NULL

                                              return;

                                         end if

                                         if   S1!=NULL

                                              r指向S1

                                         end if

                                          if   S2!=NULL

                                               r指向S1

                                          end if

 

         3、代码截图

                  

                                 

         4、PTA提交列表说明 

                          

 

                          在做这题的时候,由于前面的题目跟它有异曲同工之处,所以提交时还是比较顺利的,但在做的过程中还是又遇到一些小问题

                         1、在合并时把相同项删掉了,改成了上述写法就没有这种状况了;

                         2、在写博客园的时候,混淆了逻辑位置和物理位置,又提交了1次,发现只有部分正确,认真思考后,弄清了之前的思路。

 

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

1.顺序表PTA排名

2.链表PTA排名

 

3.我的总分:

                  238

三、本周学习总结

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

 因为自己的写代码效率低,所以一有空就编程,遇到不会的就向别人请教;整体还是比较满意的。

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

线性表是一个序列就是元素之间是有顺序的,元素间存在序偶关系。线性表的存储分为顺序存储结构和链式存储结构。

(1)顺序存储结构:用一段地址连续的存储单元一次存储线性表的数据元素。

                         优点:可以快速的访问表中任意位置的元素;

                         缺点:插入和删除需要移动大量元素。

(2)链式存储结构:用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。

                        优点:在插入和删除操作时,不需要移动元素;

                         缺点:没有顺序存储结构随机存储的优点;

                                     须为表中元素之间的逻辑关系而增加额外的存储空间。

3.代码Git提交记录截图

 

                

posted on 2018-03-24 20:51  pianzhi  阅读(155)  评论(5编辑  收藏  举报