最後一個節點的指標指向第一個節點(或表頭節點),形成環狀結構。操作與單向鏈結串列類似,差異在於:
NULLnode->next == head,而非 NULL每個節點包含兩個指標:
rlink(右鏈/後驅指標)llink(左鏈/前驅指標)結構定義:
typedef struct node {
int data;
struct node *llink, *rlink;
} JD;
可構建雙向循環鏈結串列(首尾相連)。支援查找、插入、刪除三大基本運算,雙向特性使前驅操作無需從表頭遍歷。
stud *search(stud *h, char *x) {
stud *p = h->rlink;
while (p != h) {
if (strcmp(p->name, x) == 0)
return p;
p = p->rlink;
}
printf("Not found\n");
return NULL;
}
從表頭後驅開始遍歷,直到回到表頭。展示雙向循環結構的典型遍歷模式。