双链表
pre 代表前驱指针,它永远指向当前结点的前一个结点,注意,如果当前结点是头结点,则pre指针为空;
next 代表后继指针,它永远指向当前结点的下一个结点,注意,如果当前结点是尾结点,则next指针为空;
代码设计可以为:
typedef struct line{
int data;
struct line *pre;
struct line *next;
}line , *a;
双链表的创建,需要先创建头结点再逐步的进行添加,请注意,头结点是有元素的,与一般的单链表不同。
对于逐步添加数据,采取的做法是,开辟一段新的内存空间作为新的结点,为这个结点进行的data进行赋值,然后将已成链表的上一个结点的next指针指向自身,自身的pre指针指向上一个结点。
//创建双链表
line* initLine(line * head){
int number,pos=1,input_data;
//三个变量分别代表结点数量,当前位置,输入的数据
printf("请输入创建结点的大小\n");
scanf(“%d”,&number);
if(number<1){return NULL;}//输入非法直接结束
////头结点创建/////
head = (line*)malloc(sizeof(line));
head ->pre = NULL;
head ->next = NULL;
printf("输入第%d个数据\n",pos++);
scanf("%d",&input_data);
head -> data = input_data;
line * list = head;
while (pos<= number){
line * body = (line*)malloc(sizeof(line));
body ->pre = NULL;
body ->next = NULL;
printf("输入第%d个数据\n",pos++);
scanf("%d" , &input_data;
body ->data = input_data;
list = list ->next;
}
return head;
}

浙公网安备 33010602011771号