9.0、C语言数据结构——静态链表

9.0、C语言数据结构——静态链表

 

静态链表的组成结构:

        - 我们对数组的第一个和最后一个元素做特殊处理,他们的data不存放数据;
        - 我们通常把未使用的数组元素称为备用链表;
        - 数组的第一个元素,即下标为 0 的那个元素的 cur 就存放备用链表的第一个结点下标;
        - 数组的最后一个元素,即下标为 MAXSIZE - 1 的 cur 则存放第一个有数组的元素的下标,相当于单链表中的头结点作用;
        - 一个数据的 游标 指向下一个数据的 下标;

静态链表的插入操作:

        我们前面说过,在动态链表中,结点的申请和释放分别借用C语言的 malloc() 和 free() 两个函数来实现动态的开辟空间;
        在静态链表中,操作的是数组,不存在像动态链表的结点申请和释放的问题,所以我们需要自己实现这两个函数,才可以做到插入和删除;
        为了辨明数组中哪些分量违背使用,解决的办法就是将所有未被使用过的及已被删除的用有表链成一个备用链表,应该如何操作呢?
        如下:

优点:

        - 在插入和删除操作时,只需要修改游标,不需要移动元素,从而改进了在顺序存储结构中的插入和删除操作需要移动大量元素的缺点;

缺点:

        - 没有解决连续存储分配 ( 数组 ) 带来的表长难以确定的问题;
        - 失去了顺序存储结构随机存取的特性;

        总的来说,静态链表其实是为了给没有指针的编程语言设计的一种实现单链表功能的方法; 

        尽管我们可以用单链表就不用静态链表了,但这样的思考方式是非常巧妙的,应该理解其思想,以备不时之需;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值