1,双向链表相当于两个单向循环链表。

c语言实现--双向循环链表操作

2,双向链表的结点定义。

1 struct DULNode
2 {
3     int data;
4     struct DULNode * prior;
5     struct DULNode * next;
6 };
7 
8 typedef struct DULNode * linklist;

3,单循环链表的操作都适用于双循环链表。
4,双循环链表的操作集合仍在头文件defs.h中。

5,InitList操作。双循环链表初始化操作示意图

c语言实现--双向循环链表操作

 1 #include"defs.h"
 2 
 3 void InitList(linklist *L) //改变头指针
 4 {
 5     *L = (linklist)malloc(sizeof(struct DULNode));
 6     if (*L == NULL)
 7         exit(0);
 8      (*L)->next = *L;
 9      (*L)->prior = *L; 
10 }

6,ClearList操作.

 1 #include"defs.h"
 2 
 3 void ClearList(linklist L)
 4 {
 5     linklist p = L->next;  //p指向链表第一个元素
 6    
 7     while (p != L)
 8      {
 9           p = p->next;  //p指向第二个元素
10         free(p->prior);
11      }
12      (*L)->next = *L;
13      (*L)->prior = *L;
14 }
ClearList.c

相关文章: