DS博客作业02--线性表

1.本周学习总结

1.1思维导图

1.2.谈谈你对线性表的认识及学习体会

 通过这段时间的学习,我了解到线性表是最基本、最简单、也是最常用的一种数据结构。线性表是数据结构的一种,一个线性表是多个具有相同特性的数据元素的有限序列。
线性表中数据元素之间的关系是一对一的关系,我明白了使用合适的存储结构和数据结构对程序的巨大作用,算法的重要性也不言而喻。一开始还看不出线性表和数组的区别,
觉得线性表可有可无,通过几个实例深刻体会到它的便利。

2.PTA实验作业

2.1.有序表插入数据

2.1.1设计思路

要求实现3个函数,在递增的顺序表中插入一个新整数,并保持该顺序表的有序性。
 定义i,j
    for    i=0  to  n-1  //遍历顺序表
       if    L->data[i]>x   //寻找插入的位置
    break;
    end for
    for   j=n    to    i //将L的第i项后的后移一位 
    L->data[j]=L->data[j-1]
    L->data[i]=x    //将x插入到i的位置 

2.1.2代码截图


2.1.3本题PTA提交列表说明

一开始觉得这题和之前数组的一题很像只不过用了线性表,于是照着之前的思路去做,却总是要么最后一位插入错误,或者第一位插入错误,最后函数重新整理了一下,就通过了,通过后想到了更加简洁的方法,就多试了几次。

2.2.顺序表操作集

2.2.1代码截图

2.2.2本题PTA提交列表说明

一开始对return 的使用不理解 导致编译错误
然后Insert函数没有讨论特殊情况导致部分正确
参考了网上的代码
最后完全正确

2.3链表倒数第m个数

2.3.1 代码截图

2.3.2本题PTA提交列表说明

一开始不小心使用了C语法 导致编译错误
然后发现当位置无效时PTA无法通过
检查后发现是开始的结点没有置空

3、阅读代码

3.1 题目

从顺序表中,删除其值在s与t之间(包含s和t,要求s<t)的所有元素,如果s或t不合理或者顺序表为空则显示出错信息并推出运行。

3.2 解题思路

从头到尾扫描顺序表,我们用i表示扫描的元素的个数,用k记录满足判断条件的元素的个数;

则对于扫描到的每一个元素data[i],进行判断:

如果data[i]满足判断条件,说明该元素是应该被删除的元素,k的值加1(删除该元素的操作是通过后面的元素向前覆盖的过程完成的),

如果data[i]不满足判断条件,说明该元素不应该被删除,则需要将该元素向前移动k个元素,进而实现覆盖前面的应该被删除的元素。

3.3 代码截图

3.4 学习体会

此代码出自CSDN上的优秀博客
data【】中i k两个变量使得代码变得思路非常直观
同时定义的数组是代码赋值更加的方便

posted on 2019-03-30 21:54  Miracly  阅读(190)  评论(0编辑  收藏  举报