时间:2024-10-04 来源:网络 人气:
链表是数据结构中的一种常见类型,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。C语言作为一种高效、灵活的编程语言,非常适合用于实现链表。本文将介绍C语言链表的基本操作,包括创建链表、插入节点、删除节点、遍历链表等。
在C语言中,链表通常由结构体定义,每个结构体代表链表中的一个节点。以下是一个简单的链表节点结构体定义:
```c
typedef struct Node {
int data; // 节点存储的数据
struct Node next; // 指向下一个节点的指针
} Node;
创建链表是链表操作的第一步。以下是一个使用循环创建链表的示例代码:
```c
Node createList(int n) {
Node head = NULL; // 初始化头节点
Node temp = NULL; // 临时节点
Node prev = NULL; // 前一个节点
for (int i = 0; i data = i + 1; // 设置节点数据
temp->next = NULL; // 初始化指针
if (prev == NULL) {
// 第一个节点
head = temp;
} else {
// 插入节点
prev->next = temp;
}
prev = temp; // 更新前一个节点
}
return head;
插入节点是链表操作中的重要部分。以下是一个在链表末尾插入节点的示例代码:
```c
if (newNode == NULL) {
// 内存分配失败
return;
}
newNode->data = data; // 设置节点数据
newNode->next = NULL; // 初始化指针
if (head == NULL) {
// 空链表,新节点即为头节点
head = newNode;
} else {
// 遍历链表找到最后一个节点
while (temp->next != NULL) {
temp = temp->next;
}
// 插入节点
temp->next = newNode;
}
删除节点是链表操作中的另一个重要部分。以下是一个删除指定节点的示例代码:
```c
if (head == NULL) {
// 空链表,无需删除
return;
}
Node prev = NULL;
// 查找要删除的节点
while (temp != NULL && temp->data != data) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) {
// 未找到要删除的节点
return;
}
// 删除节点
if (prev == NULL) {
// 删除的是头节点
head = temp->next;
} else {
prev->next = temp->next;
}
free(temp); // 释放内存
遍历链表是查看链表内容的基本操作。以下是一个遍历链表的示例代码:
```c
void traverseList(Node head) {
Node temp = head;
while (temp != NULL) {
printf(