顺序表的一点见解

基本操作


假设用结构体声明了顺序表 SqList的变量*L,那么初始化线性表就是让表长(L.length)=0,判断顺序表为空也是用到这个条件。将顺序表强制清空的条件则是L-》length=0,这里就有个疑问了,前面说的L.length=0和L-》length=0有什么区别呢?我是这样认为的,L.length=0是将结构体中的length赋值为0,而L-》length=0是用*L来操作结构体中的数据,既然length为0就算空表,那我就用L指向length的地址,将他的值强制赋为0,已达到清空表中数据的目的

顺序表的一点见解_第1张图片
长度为length的顺序表


顺序表的一点见解_第2张图片

返回元素个数自然就是返回L.length了。接下来是查找,也就是返回L中第i个元素的值,这里用的是Sqlist L而不是Sqlist *L,这两者的区别就在于L只是操作结构体中的数据不会影响到顺序表,*L是指针,操作的是地址,会改变顺序表的结构。查找某个元素的值,他的边界条件是如果长度为0或要查找的数小于1或要查找的数大于顺序表的长度就查找失败。然后把数据赋给承接的变量。在接下来是添加,添加就是把在某个位置之前插入数据,并且长度+1,他的边界条件是如果长度等于数组申请的最大空间就不能添加,如果要插入的位置小于1或大于L-》length+1,同样不能添加。如果可以添加,那么如果插入的位置<= L-》length也就是插入的数据不在表尾,开始添加,加完不要忘记给表长加1。最后是删除,边界条件是表空不能删,删除位置小于1或大于表长也不能删,删完也要记得表长减1


总结


时间性能:查找O(1),插入和删除O(n)

空间性能:需要预分配空间,分大浪费,分小易发生上溢

使用场景:进行尾插,不需要进行遍历来查找最后一个位置

你可能感兴趣的:(顺序表的一点见解)