三、双链表
一个完整的双向链表应该是头结点的pre指针指为空,尾结点的next指针指向空,其余结点前后相链。
- 结点构成
- 构造函数
typedef struct line{
int data; //data
struct line *pre; //pre node
struct line *next; //next node
}line,*a;
//分别表示该结点的前驱(pre),后继(next),以及当前数据(data)
- 创建
对于创建双向链表,我们需要先创建头结点再逐步的进行添加。
请注意,双向链表的头结点是有数据元素的,也就是头结点的data域中是存有数据的,这与一般的单链表是不同的。
过程: 创建头结点----创建一个新的结点----将头结点和新结点相互链接----再度创建新结点……
line* initLine(line * head){
//头结点
head=(line*)malloc(sizeof(line));
head->prior=NULL;
head->next=NULL;
head->data=1;
line * list=head