DS博客作业02--线性表
1.本周学习总结
1.1思维导图
1.2谈谈你对线性表的认识和学习体会
这几周学习了线性表,了解了线性表的两种存储方式,一种顺序储存,用的是数组,另一种是链式存储,用的是链表。线性表作为一种一对一的存储结构,可以更加方便的存储数据,完成一些复杂度较高的操作。
在写pta的时候,总是会犯一些低级错误,感觉自己对一些基本操作不够熟悉,还是要多翻翻书,不能光是背代码,还要加强对代码的理解。
2.PTA实验作业
2.1题目1:jmu-ds-头插法建链表
实现头插法建链表。需要实现下述两个函数
2.1.1设计思路(伪代码)
建立一个指针 s
定义一个整形数 i
L 指针创建空间
L 为头结点
for i=0 i <n i++
s 创建空间
输入线性表s的相应的值
// 头插法建链表相应的语法
end for
2.1.2代码截图
2.1.3本题PTA提交列表说明
刚开始的编译错误是因为没有在创建链表时分配空间,之后部分正确是答案显示时候出错了,在答案末尾有空格出现,还有就是“空间表!”后面多打了一个空格。
2.2题目2:jmu-ds-单链表逆置
本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表为带头结点链表。请实现逆转函数。
2.2.1设计思路(伪代码)
void ReverseList(LinkList &L) 单链表逆置
{
创建指针 p q
p=L->next
L->next=NULL //p作为L链表的头结点
while(p)
q=p->next //q为L链表头结点的后续结点
p->next=L->next
L->next=p
p=q //逆置操作
end while
2.2.2代码截图
2.2.3本题PTA提交列表说明
2.3题目3:jmu-ds-有序表插入数据
要求实现3个函数,在递增的顺序表中插入一个新整数,并保持该顺序表的有序性。
2.3.1设计思路(伪代码)
void CreateSqList(SqList &L, int n) //创建链表
{
定义整数型变量i k x,令i,k为0
线性表L分配空间
while(i<n) //遍历
//线性表依次存放数据
end while
}
void InsertSq(SqList &L, int x) //插入数据
{
定义整数型变量i,j
for i=0 x>L->data[i]&&i<L-length i++//遍历
for j=L-length j>i j--
//元素向后移动一个位置
end for
//增加链表长度
}
void DispSqList(SqList L) //输出顺序表内容 ,数据间空格隔开,尾部不能有空格。
定义变量i
如果L是空表,输出“erorr”
否则 先输出L->data[0]
for i=1 to i<L->length
输出“ ” ,输出L->data[i] //保证最后一个数尾部无空格
end for
2.3.2代码截图
2.3.3本题PTA提交列表说明
3.阅读代码
3.1 题目
给定一个链表,判断链表中是否有环。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
3.2 解题思路
依次遍历链表,将遍历的每一个节点都指向第一个,当遍历的节点等于第一个节点时说明有环路