静态链表、循环链表、双向链表小结

静态链表:用数组描述的链表(游标实现法),其中数组中每个元素由两个数据域构成,即data(存放数据元素)和cur(存放后继元素下标)

实现方式:建立一个较大的数组,以便在插入时不会发生溢出;为了模拟动态链表结构的存储空间的分配,即需要时申请,无用时释放,静态链表的解决办法是将所有未被使用过的以及已经被删除的分量用游标连成一个备用的链表,来区分数组中哪些分量未被使用。

组成:两个特殊的元素结点,备用链表,被使用的链表元素

两个特殊的元素:第一个结点:不存储数据,其cur存放备用链表的第一个结点的下标;最后一个元素:

不存储数据,其cur存储第一个插入元素的下标,相当于已经使用的链表元素的头结点。

插入和删除操作:只需要修改元素的游标,不需要移动元素(覆盖),从而改进了顺序存储结构中插入和删除操作中大量移动元素的缺点;但是没有解决连续存储分配的问题中表长难以确定的问题,同时也失去了顺序存储结构中随机存取的特性。

总之,静态链表是为了给那些没有指针的高级语言实现单链表而设计的。

循环链表:将单链表中终端节点的指针域由空指针改为指向头结点,使得整个单链表形成一个环。即加一个尾指针rear→next→next ==第一个结点。

双向链表:是为了克服单链表中查找上一结点的时间复杂度为O(n),而设计的双向链表,即在单链表的每个结点中在设置一个指向前驱结点的指针域,因此这样的话双向链表中的每个结点都有三个域:前驱指针域,指向直接前驱;数据域,指向存储信息;后继指针域,指向直接后继。

优点:有良好的对称性,使得对某个结点的前后结点进行操作带来了很大的方便,可以有效的提高算法的时间性能,但是在空间的占用上较多一些,是用空间来换时间性能。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值