循环链表是单向循环的,就是尾结点指向其头结点;结点只有后继指针,没有前驱。
当进行合并操作时候,循环表的运算时间复杂度为O(1)仅需要改变两个指针即可,如下图:
仅修改了尾指针的指向,如果给出的是头指针,那么也是只需改变头指针的指向。
双向的就是不但尾结点指向头结点,并且结点还有前驱指针,是双向指向。
在C语言中描述如下:
typedef struct DuLNode{
ElemType data;
struct DuLNode *prior;
struct DuLNode *next;
}DuLNode,*DuLinkList;
和单链的循环表类似,双向也可以有循环表;
如下图:
其它操作参考书籍上。