2-5 循环链表(1)

循环链表:是一种头尾相接的链表(即表中最后一个结点的指针域指向头结点。整个链表形成一个环)

图示:

优点:从表中任一结点出发均可找到其他结点

注意:由于循环链表中没有NULL指针,故而涉及遍历操作时,其终止条件不再像非循环链表中判断p或p→next是否为空,而是判断是否等于头指针

循环条件:

  1. p!=L(p的地址不等于头结点地址)
  2. p→next!=L(p的指针域指向的下一个结点不等于头结点地址)

注意:表的操作往往是在表的首尾位置上进行的

尾指针表示单循环链表:

  1. $a_1$的存储位置是R→next(R为尾指针)
  2. $a_n$的存储位置是R

2-5 循环链表(2)

【算法】将带尾指针循环链表的合并($将表T_b合并在表T_a之后)$

算法步骤:

  1. 创建一个新Node *p,存储$T_a$的头结点(因为$T_a$的头结点地址存储在$T_a$的尾结点的指针域中。之后要更改$T_a$尾结点指针域所以提前存储)