数据结构 ------ 1:顺序表

张开发
2026/5/21 5:56:44 15 分钟阅读
数据结构 ------ 1:顺序表
一数据结构的初步了解什么是数据结构举个例子学校里在举办运动会操场上聚集了很多学生这些学生各自参加运动项目这时候要在操场上找一个学生无异于大海捞针。运动会结束学生回到各自的班级这时候再去找一个学生就可以根据这个学生的年级和班级去找很方便。运动会时操场上的学生就是杂乱的数据而运动会结束后教室里的学生就是结构化的数据。数据结构就是计算机科学中用于组织、管理和存储数据的一种方式。总结一下1能够储存数据2能够管理数据增删查改等等二顺序表1.线性表线性表linear list是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的数据结构常⻅的线性表顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的 线性表在物理上存储时通常以数组和链式结构的形式存储。 案例蔬菜分为绿叶类、⽠类、菌菇类。线性表指的是具有部分相同特性的⼀类数据结构的集合 如何理解逻辑结构和物理结构2.顺序表分类1.顺序表的底层结构是数组但比数组多了增删查改的功能因为底层结构数组所以线性表在物理结构上也是来连续的。2.顺序表分类静态顺序表创建一个结构体里面设置定长数组即为静态顺序表静态顺序表的大小不可修改不够灵活。缺陷空间给少了不够⽤给多了造成空间浪费动态顺序表创建一个结构体里面创建指针来指向数组当前数据个数和总的数据容量。动态顺序表可以根据需求用malloc等的函数去向内存申请空间更加灵活方便且节省空间。三.动态顺序表的实现首先创建三个文件SeqList.h文件用来声明函数SeqList.c文件用来实现函数test.c文件用来测试。1.创建动态顺序表在SeqList.h里面创建动态顺序表用SLDataType定义数据类型方便后续改变。2.初始化在SeqList.h声明初始化函数并在SeqList.c中实现函数3.销毁4.扩容进行增删查改时首先要进行空间大小判断如果空间不够用了要先申请空间。经过计算空间都是按照原先空间的2到3倍进行扩充的初始空间也可能是0所以要先判断初始空间然后再申请空间申请空间时我用了temp临时变量如果直接用ps-arr来接收申请到的新空间申请不成功时就会把ps-arr置为空原来的数据也就找不到了。5.打印顺序表没什么好说的直接打印就行注意不要穿指针避免顺序表被修改6.尾插尾插就是在顺序表的末尾插入数据也就是在下标为size处加一个数据首先判断传来的指针是否为空再判断数组大小然后在size处插入数据接着size1。测试一下尾插成功7.头插头插就是在顺序表开头插入数据将原来的数据向后挪在0位置处写入数据测试一下测试成功8. 尾删尾删即在尾部删除一个数据size-1尾部的数据不会影响顺序表原有内容的增删查改因而尾部的数据不用管直接将size-1即可测试一下成功9.头删头删即在顺序表开头删除一个数据将数据往前移动一位即可完成头删size-1.测试一下成功10. 在指定位置之前插入数据在指定位置之前插入数据需要知道插入的位置并且要把该位置以及后面的数据向后移动一位再把数据填入到原位置上。测试一下成功11.在指定位置删除数据在指定位置删除数据只需要把其后面的位置向前移动一位即可。测试一下成功12.查找数据查找数据需要拿数据一一作对比找到了就返回下标没找到就返回没找到。测试一下成功。

更多文章