一、循环单链表
定义
结构体定义 + 循环单链表初始化……
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList;
bool InitList (LinkList &L) { L = (LNode *)malloc (sizeof LNode); if (L == NULL) return false; L -> next = L; return false; }
bool Empty(LinkList &L) { return L->next == L; }
bool isTail(LinkList L, LNode *p) { return p -> next == L; }
|
与单链表的不同
循环单链表从一个结点触发可以找到其他任何一个结点
其他操作就不废话了……
二、循环双链表
定义
结构体定义 + 循环双链表的初始化……
1 2 3 4 5 6 7 8 9 10 11 12
| typedef struct DNode { ElemType data; struct LNode *prior, *next; }DNode, *DNodeList;
bool InitDLinkList (DLinkList &L) { L = (DNode *)malloc (sizeof DNode); if (L == NULL) return false; L -> prior = L; L -> next = L; return true; }
|
循环双链表的插入
1 2 3 4 5 6
| bool InsertNextNode (DNode *p, DNode *s) { s -> next = p -> next; p -> next -> prior = s; s -> prior = p; p -> next = s; }
|
循环双链表的删除
1 2 3 4 5 6 7
| bool DeleteNextNode (DNode *p) { q = p -> next; p -> next = q -> next; q -> next-prior = p; free(p); }
|
下一节内容是:6、简单的线性表——静态链表!!!
一定要把本节内容看懂再往下看,不然会非常痛苦的哦o(╥﹏╥)oo(╥﹏╥)oo(╥﹏╥)o……..