双向链表 C语言 建立只有头结点的空链表 设置尾指针r
时间: 2024-10-20 15:14:31 浏览: 26
链表-使用C语言实现非循环双向链表-带头结点+尾结点.zip
双向链表是一种数据结构,其中每个节点包含两个指针,分别指向前一个节点和后一个节点。在C语言中,我们可以通过定义结构体来表示双向链表节点,并使用头结点(head)和尾指针(rear)来管理链表。
为了建立一个只有头结点的空链表,首先需要定义一个结构体,比如:
```c
typedef struct Node {
int data; // 节点的数据域
struct Node* prev; // 指向前一个节点的指针
struct Node* next; // 指向下一个节点的指针
} Node;
// 创建头结点
Node* createEmptyList() {
Node* head = (Node*)malloc(sizeof(Node)); // 分配空间
if (!head) { // 如果内存分配失败
printf("Memory allocation failed.\n");
return NULL;
}
head->data = 0; // 初始化头结点数据
head->prev = NULL; // 头结点前驱为NULL
head->next = NULL; // 头结点后继也为NULL
// 尾指针设置为头结点,因为链表为空
Node* r = head;
return head;
}
```
在这里,`createEmptyList` 函数创建了一个只有一个节点(即头结点)的空链表,并将尾指针 `r` 初始化为头结点。注意,这个尾指针主要用于内部管理,外部用户通常不需要直接操作它。
阅读全文