顺序表的一点见解

基本操作


假设用结构体声明了顺序表 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,已达到清空表中数据的目的

长度为length的顺序表


返回元素个数自然就是返回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)

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大家好! 《沐下花影》开始了! 我是伊沐酱,让我们开始吧! 个人简介 伊沐(印花影) 性格:孤僻,渴望被爱...
    伊沐酱阅读 1,313评论 0 1
  • Ting 毕业于厦门大学的经济学,硕士毕业于北大法学院,第一份工作是500强的经理,然后是到合规部,然后去投资并购...
    赵磊之阅读 1,137评论 0 0
  • 琼州四月天气好 省庆年会两相邀 喜迎四海八方客 欢聚琼州唱庆歌
    椰子树的期盼阅读 1,306评论 0 0