要求:已知p指向双向循环链表中的一个结点,其结点结构为data、prior、next三个域,写出算法change§,交换p所指向的结点和它的前缀结点的顺序。
[题目分析]
知道双向循环链表中的一个结点,与前驱交换涉及到四个结点(p结点,前驱结点,前驱的前驱结点,后继结点)六条链。

算法描述:

void change(LinkedList p)
{//p是双向循环链表中的一个结点,将p所指结点与其前驱结点交换q = p->pre;q->pre->next = p;      ∥p的前驱的前驱之后继为pp = ->pre = q->pre;        ∥p的前驱指向其前驱的前驱。q->next = p->next;     ∥p的前驱的后继为p的后继。q->pre = p;               ∥p与其前驱交换p->next->pre = q;        ∥p的后继的前驱指向原p的前驱p->next = q;         ∥p的后继指向其原来的前驱
}

数据链表:双向循环链表交换结点相关推荐

  1. 双向循环链表中结点的交换(C++)

    描述 利用双向循环链表表示一个整数序列,指定一个结点位置用p指向该结点,交换p所指向的结点及其前驱结点的顺序. 输入 多组数据,每组数据有三行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用 ...

  2. 链表 -- 双向循环链表(线性表)

    1,双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点.一般我们都构造双向循环 ...

  3. java循环单链表类构造函数_C++实现双向循环链表

    本文实例为大家分享了C++实现双向循环链表的具体代码,供大家参考,具体内容如下 一.概念 1.在双链表中的每个结点应有两个链接指针: lLink -> 指向前驱结点  (前驱指针或者左链指针) ...

  4. 数据结构——带头结点双向循环链表

    相比较与单链表,双向循环链表每个结点多了一个prev指针域,用于指向该结点的前驱,并且链表的头尾结点也用指针域相连.所以对于带头结点的双向循环链表的判空条件为head->next=head;除此 ...

  5. (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作

    http://blog.csdn.net/fisherwan/article/details/25649271 链表(四)实现双向循环链表简单操作,代码如下: [cpp] view plain cop ...

  6. 数据结构基础(12) --双向循环链表的设计与实现

    双向链表的操作特点: (1) "查询" 和单链表相同; (2)"插入" 和"删除"时需要同时修改两个方向上的指针. 但是对于双向循环链表则在 ...

  7. 双向循环链表:始终保持被频繁访问的结点总是靠近表头结点

    双向循环链表:始终保持被频繁访问的结点总是靠近表头结点 -数据结构题目 题目:设有一个双向循环链表,每个结点中除有prior,data和next三个域外,还增设了一个访问频度域freq.在链表被起用之 ...

  8. 数据结构与算法(2-2)线性表之链式存储(单链表、静态链表、循环链表、双向循环链表)

    目录 一.单链表 1.存储方式 2.插入 3.删除 总代码: 二.静态链表 1.存储方式 2.插入 3.删除 4.遍历 总代码: 三.循环链表 总代码: 四.双向循环链表 1.存储方式: 2.插入和删 ...

  9. 数据结构-单向循环链表、双向循环链表、仿真链表

    一.单向循环链表: 1.概念: 单向循环链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针不再是结束标记,而是指向整个链表的第一个结点,从而使单链表形成一个环. 和单链表相比,循环单链表的 ...

最新文章

  1. Ubuntu14.04 + Text-Detection-with-FRCN(CPU)
  2. hibernate连接池配置
  3. 二十四、创建Node项目,深入Nodejs
  4. HDLBits答案(11)_Verilog计数器
  5. 分库分表的事务处理机制
  6. 文件管理系统源码_基于Spring Cloud微服务构建多平台功能完善小说弹幕网站源码分享...
  7. java作业 计算平均分和总成绩
  8. Protobuf 的 import 功能在 Go 项目中的实践
  9. java settitle 源码_在其他初始化方法中折叠工具栏的setTitle - java代码 - 源码查
  10. Linux下部署Spring Boot项目
  11. GotoAndPlay 图论
  12. jquery 控制frameset frame节点内容(在子窗口中把该窗口中的焦点处的text内容填
  13. DNS解析错误解决办法
  14. rake matlab,基于MATLAB的Rake接收机仿真及性能分析
  15. 计算机中学期末考试,[探析我国中学计算机教育]计算机基础大一考试题
  16. macOS安装wget
  17. [GIS教程] 5.2 空间数据管理 | SDE空间数据引擎
  18. 苹果iOS 8.0正式发布啦
  19. 微信公众号Python开发(Wechatpy+新浪云SAE应用)
  20. ByVal和ByRef区别

热门文章

  1. 安全使用iphone的7个小技巧
  2. ssh远程登录和防火墙
  3. 为什么大公司都粗暴地用学历筛简历?他们不怕漏掉顶级人才吗?
  4. 麒麟桌面虚拟机密码破解方法,qcow2格式麒麟操作系统忘记密码处理方法,麒麟qcow2镜像v10版本操作系统下载,麒麟ubuntu离线deb包下载地址并离线安装
  5. matlab GUI设置背景图及添加logo
  6. java如何组成一个软件_一个Java源程序是由若干 (  )组成。
  7. 贵阳python线下培训班
  8. MYSQL一目了然 JOIN 图
  9. ps 如何将视频转换成gif?
  10. script标签的onload事件的触发时机