DS博客作业02--线性表
1.本周学习总结(0--2分)
1.1思维导图
1.2.谈谈你对线性表的认识及学习体会。
认识:线性表是数据结构的一种,分顺序和链式。线性表中数据元素之间的关系是一对一的关系。线性表的相邻元素之间存在着序偶关系。
学习体会:上学期没怎么搞懂的链表这学期基本上明白了,数据结构的题涉及到不少指针的运用,可以说上学期学指针是给现在打的基础,这个基础真的很重要。
2.PTA实验作业(6分)
2.1.题目1:6-3 jmu-ds- 顺序表删除重复元素
2.1.1设计思路(伪代码)
伪代码尽量文字描述,请用下面markdown符号渲染。如:
函数1:void CreateSqList(List &L,int a[],int n) //创建顺序表
定义变量i;
给指针L分配空间,大小为n个SqList,
for i=0 to n
用a[i]对L->data[i]进行赋值
令顺序表长度等于n;
函数2:void DispSqList(List L) //输出顺序表
定义变量i;
for i=0 to L->length
if(i) 输出一个空格;
输出L->data[i]的值;
函数3:void DelSameNode(List &L) //删除顺序表重复元素
{
定义变量i,j,k=0;
for i=0 to L->length
L->data[k]=L->data[i];
for j=0 to i
if(L->data[i]==L->data[j])
{
该次赋值不算数,重新对这个L->data[k]进行赋值;
break退出第二个循环;
}
}
k++;
}
令顺序表长度等于k;
}
2.1.2代码截图
2.1.3本题PTA提交列表说明
2.2 题目2:6-9 jmu-ds-有序链表合并
2.2.1设计思路(伪代码)
定义LinkList类型的三个变量p,q,r;
if(L1是空链表)
L1头指针指向L2头结点;
return;
else if(L2是空链表)
return;
指针r指向L1链表开头,进行链表重构
p,q指向L1,L2链表首结点
while(p&&q)
if(p->data<q->data)
将p结点尾插入链表L1;
指针p向后移动;
else if(p->data>q->data)
将q结点尾插入链表L1;
指针q向后移动;
else if(p->data==q->data) //两结点数据大小相等
将p结点尾插入链表L1;
指针p,q同时向后移动;
指针r向后移动
if(p==NULL)
将q结点及其后结点全部尾插入链表L1;
退出循环;
else if(q==NULL)
将p结点及其后结点全部尾插入链表L1;
退出循环;
2.2.2代码截图
2.2.3本题PTA提交列表说明
2.3 题目3:7-2 一元多项式的乘法与加法运算
2.3.1设计思路(伪代码)
函数1:LinkList AddList(LinkList L1,LinkList L2) //多项式相加合并链表
{
定义LinkList类型的五个变量 L,p,q,r,s;
if(L1为空链表)
返回 L2;
else if(L2为空链表)
返回 L1;
给头结点L分配大小为一个LNode的空间;
指针r指向L1链表开头,新建链表;
p,q指向L1,L2链表首结点;
while(p&&q)
{
给结点s分配大小为一个LNode的空间;
if(p,q所指两结点指数大小不相等)
s->index=较大的指数;
s->coefficient=较大指数对应的系数;
较大指数对应的指针向后移动;
else if(两结点指数大小相等)
s->index=该相等的指数;
s->coefficient=两系数进行相加;
p,q两个指针一起向后移动
将结点s用尾插法插入链表L;
指针r向后移动;
if(q==NULL)
将剩余的p及其之后的结点依次赋值给结点s
将结点s用尾插法插入链表L;
最后一个结点的next指向NULL;
退出循环;
else if(p==NULL)
将剩余的q及其之后的结点依次赋值给结点s
将结点s用尾插法插入链表L;
最后一个结点的next指向NULL;
退出循环;
返回 L;
函数2:LinkList MultiplyList(LinkList L1,LinkList L2) //多项式相乘合并链表
{
定义LinkList类型的变量 p,q,s,r,La,Lb;
if(L1为空链表)
返回 L1;
else if(L2为空链表)
返回 L2;
q指向L2链表首结点
给结点La分配空间,新建La链表;
if(L1或L2是空链表)
返回 NULL;
while(q)
p指向L1链表首结点
给结点Lb分配空间;
指针r指向Lb链表开头,新建链表;
while(p)
给结点s分配空间;
s->index=p->index+q->index;
s->coefficient=p->coefficient*q->coefficient;
将s结点用尾插法插入链表Lb;
指针p,r向后移动;
Lb链表最后一个结点的next指向NULL;
引用AddList函数令两个多项式进行相加,并将所得结果重新给La;
指针p,r向后移动;
返回 La;
2.3.2代码截图
2.3.3本题PTA提交列表说明
3、阅读代码(-2--2分)
找一份优秀代码,理解代码功能,并讲出你所选代码优点及可以学习地方。主要找以下3种类型代码:
读源码,如从python或C++中找用线性表封装的库源码,分析代码功能及可以学习地方。
考研题种关于线性表内容。可以找参加过考研的学长学姐拿。尤其是想要考研同学,可以结合本章内容,用考研题训练学习。
ACM、PTA天梯赛、leecode面试刷题网站,找线性表相关题目阅读分析。
请按照下面内容填写代码阅读内容。请未必认真完成,如果发现应付,没有介绍代码思路、体会等扣分。
3.1 题目
介绍代码解决问题