![19a30b2673fcd710d09d378d843de58e.png](https://i-blog.csdnimg.cn/blog_migrate/df317294470d5c83f378d129489ac885.jpeg)
一、原理
1.定义
顺序表是在计算机中以数组形式保存的。
2.特点
在计算机中占用连续的一段内存
一旦声明,空间大小一般不变
二、初始化相关操作
包括:
(1)结构体的定义
(2)顺序表的创建
(3)顺序表清空
(4)判断顺序表是否为空
1.结构体定义
即定一个满足顺序表定义的结构体,其中包含 数组、存储长度、总长度。
![000c9b4cee8104f1754bc223748b75ab.png](https://i-blog.csdnimg.cn/blog_migrate/a20d257f935276d416bf2726b1774587.png)
2.初始化
对顺序表进行初始化,包括分配自定义长度的数组空间,设定存储长度为0,存储长度为规定值
![defe2b88a295b98b3de789207ce5898e.png](https://i-blog.csdnimg.cn/blog_migrate/34279097940c992b62fa776a88ede846.png)
3.清空
将顺序表内容清空,用于某些题目要求或节省空间
![b9d626c08005be770d10fd9250218126.png](https://i-blog.csdnimg.cn/blog_migrate/058fe84a351fc7675c7a3f265d4ad8a4.png)
4. 判断是否为空
判断顺序表是否为空,在某些操作之前,先要判断顺序表是否为空,防止出错
intisEmpty(struct List *L){returnL->length==0?1:0;//顺序表最大长度为0则为空返回1,否则返回0}
三、增加相关操作
包括:
(1)向表头插入元素x
(2)向表尾插入元素x
(3)向第n个位置插入元素x
(4)向递增的线性表中插入元素x,之后仍然保持有序
进行操作之前,还需要一个方法,当插入元素超过数组长度时,将数组容量扩大,即重新申请空间
Tip:将顺序表扩大一倍空间
![9bae291a56567a893a5be8bb2d9baa2d.png](https://i-blog.csdnimg.cn/blog_migrate/cf664c7c5a13fccbdb465106a8271362.png)
1.向表头插入元素x
![979deceb2ca4a23f33271eb913d3f9b9.png](https://i-blog.csdnimg.cn/blog_migrate/4c289375fb7b542e8210ea1f1e1e7a65.png)
2.向表尾插入元素x
![b9ac758bb578fdc4ed8478c72054d175.png](https://i-blog.csdnimg.cn/blog_migrate/eca17a28ec39fe559ae9a5f09697d2d1.png)
3.向线性表L的第n个位置插入元素x
![27be10a345873f4196282fe187ec8840.png](https://i-blog.csdnimg.cn/blog_migrate/74831b64259d435901da244fdca9889d.png)
四、删除相关操作
包括:
(1)删除表头元素并返回被删除的值
(2)第n个元素并返回被删除元素
(3)从线性表L中删除值为X的第一个元素
1.删除表头元素并返回被删除的值
删除表头第一个元素,长度减少1,返回被删除的值
![5c50f543b1a9096688676e5ed953c302.png](https://i-blog.csdnimg.cn/blog_migrate/4422d4dceeb3a04ffbc54478b6881d8e.png)
2.删除第n个元素并返回被删除元素
![cf1dc6a4c896bc04720da25b7db89116.png](https://i-blog.csdnimg.cn/blog_migrate/0570f538a58b36ad129045336968a797.png)
3.从线性表L中删除值为X的第一个元素
从线性表L中删除值为X的第一个元素,若删除成功则返回1,否则返回0
![ebcc7d888a76152a7b953719782b4e76.png](https://i-blog.csdnimg.cn/blog_migrate/5df829fffc0f6070c1505513ce285bbd.png)
五、修改相关操作
包括:把线性表中第n个元素修改为x
1.把线性表中第n个元素修改为x
把线性表中第n个元素修改为x,若成功则返回1,失败返回0
![19d00bb01ec7685571e3de6ea25a048a.png](https://i-blog.csdnimg.cn/blog_migrate/235832346665e585c54ebe9d86f6d3e3.png)
六、查找相关操作
包括:
(1)查找第n个位置的值
(2)顺序遍历输出所有值
(3)返回值等于x的下标
1.查找第n个位置的值
输入要查找的坐标,若合法则范围对应的值,若非法则提示并推出
![3b0b34de4a081821de29f5c2143ddc55.png](https://i-blog.csdnimg.cn/blog_migrate/4c0f12379b9e6e93bb9f9b82c285b785.png)
2.顺序遍历输出所有值
输出顺序表中的所有值
![efda09988cb9fe0867d8f5aa18f8bf5a.png](https://i-blog.csdnimg.cn/blog_migrate/f38d4ccf286de5080d8346839201c99c.png)
3.查找值为x的节点并返回其坐标
输入要查找的值x,若存在则范围首次出现的下标,否则返回0
voidfindElem(struct List *L,ElemType x){inti;for(i=0;ilength;i++){if(L->list[i]==x){returni;}}}
七、总结
1.优点
查找方便
空间利用率高
2.缺点
删除和增加操作效率低
空间固定,不易扩展
八、完整代码
![8530fd8628bf27bc720396b3382d7549.png](https://i-blog.csdnimg.cn/blog_migrate/16e6d063c7da6e35d963a7fd0b002206.png)
![6712e6c6251e9f12f4b63772137b0c9d.png](https://i-blog.csdnimg.cn/blog_migrate/a58b5a9d90f3d92ae394f0652d4b8c21.jpeg)
![4fb044022ed53b35f5fd6a43a54938b1.png](https://i-blog.csdnimg.cn/blog_migrate/41d09f77199667ea04e5ed22ae8cde17.jpeg)
![689a519d0e23ca812c68e84de04ca6c2.png](https://i-blog.csdnimg.cn/blog_migrate/c24e66076cfefe202dd0475e997e62a9.jpeg)
![37d2ed3ae3bb23c8fb12d7fa4b408100.png](https://i-blog.csdnimg.cn/blog_migrate/212e3159fb9cb522387a46284e47c175.png)
学习C/C++编程知识,想要成为一个更加优秀的程序员,或者你学习C/C++的时候有难度,可以来笔者的C语言C++零基础编程学习圈,里面有学习视频和文件资料,还有更多志同道合的朋友,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!
学习C/C++编程知识,欢迎关注笔者学习专栏一起成长:
C/C++编程学习聚集地zhuanlan.zhihu.com![12f8874a40d814a40e42e94d34f38322.png](https://i-blog.csdnimg.cn/blog_migrate/30cb3618a976cf39ff25dafb34ad9bb5.jpeg)