链表 ¶
单向链表 ¶
数据结构如下定义:
有如下操作:
双向循环链表 ¶
数据结构如下定义:
typedef struct node* List;
typedef struct node {
int data;
struct node *prev;
struct node *next;
} Node;
有如下操作:
List CreateList(int n) {
List L = (List)malloc(sizeof(Node));
L->prev = L;
L->next = L;
List p = L;
for (int i = 0; i < n; i++) {
List temp = (List)malloc(sizeof(Node));
scanf("%d", &temp->data);
temp->prev = p; /* temp 的前驱是 p */
temp->next = p->next; /* temp 的后继是 p 的后继 */
p->next->prev = temp; /* p 的后继的前驱是 temp */
p->next = temp; /* p 的后继是 temp */
p = temp;
}
return L;
}