数据结构-线性表

这几天在看程杰编写的《大话数据表结构》,看到线性表的时候,长篇大论看的我晕头转向,看完以后通过百度等方式整理了一下自己的思维,把这个表结构进行梳理一下

线性表可以分为两种存储结构

1.顺序存储结构

  先来看看他的定义“线性表的顺序存储结构,指的是用一段地址连续的单元依次存储线性表的数据元素”。

  说白了就是在内存中找了一块地儿通过占位的方式把一定内存占了,然后把数据类型的数据元素依次存放在这块空地中。

 特点:顺序存储结构,用一段连续的存储单元依次存储线性表的数据元素

优点:存储空间固定。无须为表中元素之间的逻辑关系而增加额外的存储空间。

缺点:插入和删除时需要移动大量元素

            插入,需要从最后一个元素开始向前遍历到第N个位置,分别将他们向后移动一个位置,然后将插入数据放入第N个位置。

            删除,取出删除元素,从删除位置开始遍历到最后一个位置,分别把他们都向前移动一个位置。

           需要预分配存储空间,分大了浪费,分小了易发生溢出。

2.链式存储结构

  线性表的链式存储是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的也可以是不连续的。这就意味着,这些数据元素可以存放在内存未占用的任意位置。

  (1)单链表

    单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素。

优点:单链表的修改和删除只需要修改第N位的指针位置即可

            新增,如果第N位新增,则先找到第N位的指针,然后插入新元素,把第N-1的指针指向N,把自己的指针指向原数据的第N位即可。

            删除:删除第N位元素的数据,并且把原有N-1的指针指向原有第N+1位。

小总结:如果线性表要频繁的进行查找,很少进行插入和删除操作时,宜采用顺序存储结构,若要频繁的进行插入和删除时,宜采用单链表结构。

(2)静态链表

  用数组描述的链表,即称为静态链表。相比较普通数组而言,这个数组里边存储的是数据指针。

    新增:如果要在第N位新增一个元素,则先在表尾新增一个元素,然后修改第N个元素的游标,将元素插入到链表中。

    删除:如果要删除第N个位置的元素,则先把游标指向N-1个元素,将N-1元素的游标指向N+1,即可。

优点:修改和删除时只需要修改第N位的指针即可

缺点:没有解决联系存储分配带来的表长度难以确定的问题。

(3)循环链表

 将单链表中终端节点的空指针改为指向头节点,就使整个单链表形成一个环,这种头尾相接的单链表成为单循环链表,简称循环链表。


(4)双向链表

双向链表是在单链表的每个节点中,在设置一个指向其前驱节点的指针域。所以在双向链表中的节点都有两个指针域,一个指向直接前驱,一个指向直接后继。

所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值