目录
1. 数据结构
要说顺序表就离不开数据结构
2. 线性表
首先我们这里要知道一个概念:顺序表是线性表的一种。
3. 顺序表的分类
顺序表在物理结构上是连续的,逻辑上是线性的。因此顺序表属于线性表。
顺序表又分为静态顺序表和动态顺序表。
3.1静态顺序表
3.2 动态顺序表
3.3 总结
顺序表就是一个数组而已,只不过我们可以对这个数组进行增删查改的功能。
4. 动态顺序表的实现
首先我们需要建立三个文件分别是test.c,SeqList.c,SeqList.h;第一个文件我们用来测试第二个文件我们用来实现顺序表的功能,第三个文件用来声明实现顺序表的函数。
4.1SeqList.h
4.2 SeqList.c
这个就很简单就不多说了~
这里我们初始化的时候令数组为空同时有效数据以及容量都是0.
在我们进行销毁时说明arr数组已经申请了空间只有它不为空时我们进行free
这个方法就是当我们数组的容量与数组的有效数据个数相同时说明容量不够我们就需要用realloc函数进行扩容这里我们之所以定义了newcapacity变量是因为我们在初始化时令capacity为0了。
尾插之前我们需要检查空间容量是否足够让后就可以在下标为size的位置直接插入同时ps->size++;
头部插入我们画图分析一下有两种方法可以实现
第一种就是我们的for循环
第二种方法法直接调用memmove函数起始位置就是数组首元素的地址目标位置就是起始位置的地址加一让后挪动size个元素的字节大小。
该函数的实现与头插类似这里我们就不加赘述了啊~
尾部删除直接就size--就可以了
这个我们还是画图分析
这里我们在删除指定位置的数据时应该要保证里面有效数据存在删除就是把pos位置的元素被覆盖如下图所示:
最后我们把size--就行了
这个就比较简单就不分析了~
到此为止,我们已经完成了动态顺序表的增添删改功能~~~