博客作业2---线性表

一、PTA实验作业(5分)

1.题目1:题目名称:线性表元素的区间删除

2. 设计思路(伪代码或流程图)

定义i,j,n;
n指向L的下一个
for i=0 to i<n+1
  如果(L->Data[i]大于minD)&&(L->Data[i]小于maxD)
  L->Last-- ;
else
    L->Data[j++]=L->Data[i];
  end for
  返回L;

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

4.PTA提交列表说明。

1.题目2:题目名称:链表倒数第m个数

2. 设计思路(伪代码或流程图)

定义a,n;
定义一个p指针指向L头节点
    遍历L 计数个数n
    a=n-m+1;  //直到指到第n-m+1个数字为止(倒数第m个)

如果m>n||a>n||m<0
        return -1           
 while(a)
     L左移,a--;
        返回a;

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

4.PTA提交列表说明。

为什么一直是部分正确,因为一直没有考虑到m<0的情况,后面通过再理一遍思路
发现:如果m>0 (for i=1 to n-m+1 );i++ ; L左移; a直到指到第n-m+1个数字为止(倒数第m个),而如果m<=0 则x=-1

1.题目3:题目名称:两个有序序列的中位数

2. 设计思路(伪代码或流程图)

若a<b,则肯定不在S1的左半边,因为如果在S1的左半边则中位数<a<b,即也在S2的左半边,在整个S1+S2中
也是在左半边,不是在中点,与中位数矛盾;同理不在s2的右半边

若a>b时,原理同上

当S1长度为奇数时,左半边=右半边,直接舍弃即可
当S1长度为偶数时,左半边+1=右半边。若a<b,舍弃a的左半边(包括中点) 舍弃b的右半边(保留中点)
始终保持S1 S2等长
利用sort函数给定区间所有元素进行排序

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

4.PTA提交列表说明。

二、截图本周题目集的PTA最后排名(3分)

1.顺序表PTA排名

2.链表PTA排名

3.我的总分:179

三、本周学习总结(2分)

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

本周学习时间基本没有好安排,所以非常不满意,我觉得每次都想要改变,但是基础太差,又耐不下心思去重新学习一遍c语言,恶性循环,所以我准备每天学习一点c语言,然后预习数据结构,把书上每一个代码都弄懂。

2.谈谈你对线性表的认识?(1分)

线性表:零个或多个相同特性的数据元素的有限序列。首先它是一个序列,元素之间是有顺序 的,第一个元素无前驱,最后一个元素无后继,其他的都有且只有一个前驱和后继。而所有元素按这种1对1的邻接关系构成的整体就是线性表。

线性表的存储结构:线性表有顺序表和链式两类存储结构

(一)顺序表
顺序表就是把线性表中的所有元素按照其逻辑顺序,依次存储到从计算机存储器中指定存储位置开始的一块连续的存储空间,如下图所示,即用一维数组来实现顺序表。

(二)链表
在链式存储结构中,每个结点用于存储线性表的一个元素,每个结点不仅包含有所存元素本身的信息(称之为数据域),而且包含有元素之间逻辑关系的信息,即前驱结点包含有后继结点的地址信息,这称为指针域,这样就可以通过前驱结点的指针域方便地找到后继结点。链表由多个结点组成,这些结点的地址可以是连续,也可以不连续,这就是说这些数据元素可以存储在内存中未被占用的任意位置。

链表由如下几种形式
(1)单链表:在每个结点中包含有数据域外,只设置一个指针域,用于指向其后继结点,如图

(2)双链表:在每个结点中包含有数值域外,设置有两个指针域,分别用于指向其前驱结点和后继结点。如图:

(3)循环链表:循环链表是另一种形式的链式存储结构。它的特点是表中尾结点的指针域不变,而是指向表头结点,整个链表形成一个环,如下图:

3.代码Git提交记录截图

四、阅读代码(选做,加1分)
找1篇优秀代码贴图展示,并说明该代码功能是什么,优点是什么?
代码可以是自己同学代码,也可以是其他地方找的代码。
一元多项式求导
:定义节点类型以及主函数
:查找位置插入新链节的函数,且让输入的多项式呈降序排列


posted @ 2018-03-25 21:17  l杨发热  阅读(252)  评论(2编辑  收藏  举报