大话数据结构 第三章 线性表(二) 静态链表、循环链表和双向链表

静态链表(未使用指针)

定义

  • 静态链表:用数组描述的链表
  • 由两个数据域组成:data和cur。data用来存放数据元素,cur用来存放该元素的后继在数组中的下标,即游标。
  • 备用链表:未被使用的数组元素
  • 数组第一个和最后一个元素作为特殊元素处理,不存数据
  • 第一个元素(下标为0的元素):cur存放备用链表的第一个结点的下标
  • 最后一个元素:cur存放第一个有数值的元素的下标

插入操作

  • 需要自己实现结点的申请和释放函数
  • 主要思想是把要插入元素的游标调整至对应位置,而与数据的实际相对地址(下标)无关

删除操作

  • 将删除的位置成为第一个优先空位,把它存入第一个元素的cur中

优缺点

优点

  • 在插入和删除操作时,只需要修改游标,不需要移动元素。

缺点

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

循环链表

定义

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

循环链表的合并

  • 存在两个循环链表,尾指针分别为rear A、rear B
  • 需要丢弃rear B 的头结点,具体操作为
  • (rearA->next) 指向 (rearB->next->next)
  • (rearB->next) 指向 (rearA->next)

双向链表

定义

  • 双向链表是在单链表的每个结点中,再设置一个指向其前驱结点的指针域。结点有两个指针域,一个指向直接后继next,一个指向直接前驱prior。

插入操作

  • 假设元素e的结点为s,要插入到结点p和结点p->中:
  • 把p赋值给s的前驱: s->prior = p;
  • 把p->next复制给s的后继:s->next = p->next;
  • 把s赋值给p->next的前驱:p->next ->prior = s;
  • 把s赋值给p的后继:p->next = s;

删除操作

  • 假设在p->next和p->prior之间删除结点p:
  • 把p->next赋值给p->prior的后继:p->prior->next = p->next;
  • 把p->prior赋值给p->next的前驱:p->next->prior = p->prior;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值