定义结构体
- typedef struct node
- {
- DataType value;
- struct node *next; //保存前一个结点的地址
- struct node *front;//保存后一个结点的地址
-
- }doublelist;
//创建一个空的双向循环链表
- doublelist * DoublelistCreate()
- {
- doublelist *head = (doublelist *)malloc(sizeof(doublelist));
- head->next = head;
- head->front = head;
- return head;
- }
//插入数据
void DoublelistInsert(doublelist *head, DataType value) { doublelist *tmp = (doublelist *)malloc(sizeof(doublelist)); tmp->value = value; tmp->next = head->next; tmp->front = head; head->next->front = tmp; head->next = tmp; }
//遍历链表 void DoublelistPrint(doublelist *head) { doublelist *tmp = head; while(tmp->next != head) { tmp = tmp->next; printf("%d ", tmp->value); } putchar('\n'); }
//头删法 DataType DoublelistDeleteHead(doublelist *head) { if(head->next == head) { printf("链表为空"); return -1; } doublelist *tmp = head->next; DataType value = tmp->value; head->next = tmp->next; tmp->next->front = head; free(tmp); tmp = NULL; return value; }