数据结构双向链表创建安特尼
时间: 2023-11-19 07:49:24 浏览: 43
数据结构中,双向链表是一种常见的数据结构,和单向链表类似,只是在每个节点中多了一个指向前一个节点的prior指针。在C语言中,可以通过以下代码创建一个双向链表:
```c
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef int ElemType ;
typedef struct Dnode{
ElemType data ;
struct Dnode *prior ;
struct Dnode *next ;
}Dnode;
Dnode *createDouble(int n) {
Dnode *head , *p , *q ;
int i ;
head = (Dnode *)malloc(sizeof(Dnode)) ;
head->prior = NULL ;
head->next = NULL ;
q = head ;
for(i = 0 ; i < n ; i++) {
p = (Dnode *)malloc(sizeof(Dnode)) ;
scanf("%d", &p->data) ;
q->next = p ;
p->prior = q ;
p->next = NULL ;
q = p ;
}
q->next = NULL ;
return head ;
}
void displayDouble(Dnode *L) {
Dnode *p ;
p = L->next ;
while(p != NULL) {
printf("%d\t", p->data) ;
p = p->next ;
}
puts("") ;
return ;
}
void main() {
Dnode *L ;
int num ;
printf("Please input the num of elements\n") ;
scanf("%d", &num) ;
printf("Please input the elements to establish a double linked list\n") ;
L = createDouble(num) ;
displayDouble(L) ;
return ;
}
```
这段代码首先定义了双向链表的节点结构体Dnode,其中包含了数据和指向前一个节点和后一个节点的指针。接着,通过createDouble()函数来创建一个双向链表,该函数参数n表示链表的节点个数,函数内部通过malloc()函数动态申请内存空间来创建节点,并使用scanf()函数来输入节点的数据。然后,我们可以通过displayDouble()函数来遍历并打印出链表中的元素。