一.线性表
直接前驱,直接后继:元素i的前一个元素为直接前驱,元素i的后一个元素为直接后继。一个元素(除首位外)都只有一个直接前驱和一个直接后继。
位序:元素位序可看成一个正在排队的队伍,小明排第3个,小明位序为3,因此元素位于第几个元素位序就为几。
二.顺序存储的定义和初始化
顺序存储:在内存中找一块连续的空地,通过占位的方法占据一段连续的内存。
顺序存储的结构定义为数组和数组的长度(在此定义元素全为整形)
顺序存储中数组长度和数组容量所对应的值不同,数组长度对应上图的num,数组容量对应上图的MAXSIZE,因此不要认为数组长度就是数组的容量。
三.顺序存储的插入
因为顺序存储是用数组来进行存储的,如果是插在顺序表长度的后一位,可直接插入,但若是在顺序表的中间或头部插入元素就需要移动顺序表的元素。如下图
代码如下:
头插结果:
尾插结果:
中间位置插入结果:
因为i从0开始,因此在i=1是会进行头插
四.顺序存储的删除
(1.)删除i位置的元素
删除只要判断删除的位置是否是数组元素的最后一个,是最后一个只需修改数组元素的大小即可,其它只需要把i位置之后的元素往前移动即可。
代码如下:
结果如下:
(2.)删除值为x的元素
只需查找元素值为x的下标后,即可转换为删除i位置的元素
代码入下:
结果如下:
五.查找值为x的元素
查找成功返回true,失败返回false(使用布尔bool,要添加头文件#include<stdbool.h>)
代码如下:
结果如下:
六.修改x的值为y
找到x的值时直接修改为y
代码如下:
结果如下:
七.清空
直接把list->num=0即可
八.判断线性表(顺序存储)是否为空
直接判断list->num是否为0,为0即为空
整体代码和运行结果如下: