用c语言编:现有空双向链表 L,其结点结构为:typedef struct DuLNode { int data; struct DuLNode *prev,*next; };
时间: 2024-09-26 16:13:05 浏览: 14
在C语言中,我们可以使用`struct`关键字定义一个双向链表节点的结构体。首先,我们需要定义一个结构体`DuLNode`,它包含数据成员`data`、指向前一个节点的指针`prev`以及指向下一个节点的指针`next`。接下来,我们会提供一些基本的链表操作函数,如初始化链表、添加节点和打印链表。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct DuLNode {
int data; // 数据域
struct DuLNode* prev; // 指向前一个节点
struct DuLNode* next; // 指向下一个节点
} DuLNode;
// 初始化一个空双向链表
DuLNode* createEmptyList() {
DuLNode* head = (DuLNode*)malloc(sizeof(DuLNode));
head->prev = NULL;
head->next = NULL;
return head;
}
// 添加节点到链表尾部
void appendNode(DuLNode** head, int data) {
DuLNode* newNode = (DuLNode*)malloc(sizeof(DuLNode));
newNode->data = data;
newNode->prev = NULL;
newNode->next = *head;
if (*head != NULL) {
(*head)->prev = newNode;
}
*head = newNode;
}
// 打印链表
void printList(DuLNode* head) {
DuLNode* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
// 创建一个空链表
DuLNode* listHead = createEmptyList();
// 添加几个节点
appendNode(&listHead, 1);
appendNode(&listHead, 2);
appendNode(&listHead, 3);
// 打印链表
printList(listHead);
return 0;
}
```
在这个示例中,我们创建了一个名为`createEmptyList`的函数来初始化一个空链表,`appendNode`用于在链表尾部添加新节点,`printList`则用于打印链表的内容。在`main`函数里,我们展示了如何创建一个空链表,添加节点并打印链表。