线性表

       下个月就要自考了,这几天在做数据结构导论的题。发现这本书一共就两部分,分别是存储结构(表、树、图)和对数据的操作(查找、排序)。今天想说说线性表的两种存储结构(顺序存储和链式存储)。


       顺序存储顾名思义就是将表中的节点依次放在计算机内存中一组连续的存储单元中,数据元素在线性表中的邻接关系决定它们在存储空间中的存储位置,即逻辑结构中相邻的节点期存储位置也相邻,一般使用数组来表示顺序表。

       顺序存储是最简单最原始的一种存储方式,因为是数组需预先定义,所以会浪费一些空间,第i个数据元素存放在数组下标为“I-1”的位置。它的基本运算为插入、删除、定位。

       插入对应的题型一般是:在表长为N的表上的第M个元素前插入,需要移动元素的个数为N-M+1

       删除对应的题型:把表长为N的表上的第M个元素删除,则M以后的元素向左移动,表长减1

       定位对应的题型:一般与时间复杂度联系,我们可以想象定位必定是一个一个依次查找,所以要用到一次循环,在表长为N的表上定位时间复杂度就为O(N)。


       链式存储常见的有单链表、循环链表、双向循环链表。加入了指针,指向下一数据元素,尾节点指针为Null空指针,如果头指针指向尾指针则为空单链表。循环链表的最后一个节点的指针指向第一个结点。双向循环链表加入了一个指向前驱结点的指针prior。

       需要注意的是插入运算,单链表需要用一个指针指向待删结点的前驱结点。在双循环链表中,可直接删除。


       在比较两种方式的时候,一般比较它们的时间复杂度,这也是经常出题的点。按位置查找运算时,顺序表是随机的,时间复杂度是O(1),单链表需要扫描用到循环,所以为O(N)。定位运算时,都要扫描用到循环,所以时间复杂度都为O(N)。插入、删除运算时,都需要定位,所以时间复杂度都为O(N)。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值