请用C语言写一段定义双链表的代码,并指出它和单链表在代码上的不同。
时间: 2023-02-25 10:01:29 浏览: 96
下面是一段C语言代码,定义了双链表:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct DNode{
int data;
struct DNode *pre;
struct DNode *next;
} DNode, *DLinkedList;
DLinkedList createDLinkedList() {
DNode *head = (DNode *)malloc(sizeof(DNode));
head->next = NULL;
head->pre = NULL;
return head;
}
void addDNode(DLinkedList L, int data) {
DNode *newNode = (DNode *)malloc(sizeof(DNode));
newNode->data = data;
newNode->next = L->next;
newNode->pre = L;
if (L->next != NULL) {
L->next->pre = newNode;
}
L->next = newNode;
}
void deleteDNode(DLinkedList L, int data) {
DNode *p = L->next;
while (p != NULL && p->data != data) {
p = p->next;
}
if (p != NULL) {
p->pre->next = p->next;
if (p->next != NULL) {
p->next->pre = p->pre;
}
free(p);
}
}
```
和单链表相比,双链表不仅保存了后继节点的指针,还保存了前驱节点的指针。在代码实现上,这就意味着双链表操作需要多维护前驱节点的指针。
阅读全文