#ifndef __DOUBLELINKEDLISTWITHHEAD_H__
#define __DOUBLELINKEDLISTWITHHEAD_H__
#include <stdio.h>
#include <stdlib.h>
typedef int Elemtype;
typedef struct DLNODE
{
Elemtype data;
struct DLNODE* prev;
struct DLNODE* next;
}DLNode;
typedef struct LIST
{
struct DLNODE* first;
struct DLNODE* last;
int num;
}List;
DLNode* init_DLNode(Elemtype v);
List* init_list(void);
List* creat_list(List* list);
List* add_a_node(List* head, Elemtype var,Elemtype y);
void print_list(List* li);
void delete_a_node(List* lm, Elemtype vm);
void delete_all_node(List* lm, Elemtype vm);
#endif
这段代码是一个双向循环链表的头文件。让我们来解析一下:
- 首先,引入了`stdio.h`和`stdlib.h`头文件,以便使用标准输入输出和动态内存分配函数。
- 定义了元素类型`Elemtype`,这里使用`int`作为示例。
- 定义了双向链表的节点结构`DLNode`。节点结构包含了数据域`data`和两个指针域`prev`和`next`,分别指向前一个节点和后一个节点。
- 定义了链表结构`List`。链表结构包含了指向首节