用c语言编写链表的基本操作
时间: 2024-10-21 14:14:48 浏览: 20
在C语言中,我们可以使用结构体和指针来实现链表的基本操作。这里是一个简单的单向链表的例子,包括创建节点、初始化链表、插入节点以及删除节点。
首先,我们定义链表节点的结构体:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
接下来,我们创建链表相关的函数:
**1. 创建节点 (create_node)**
```c
Node* create_node(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL; // 初始时指向NULL
return newNode;
}
```
**2. 初始化链表 (initialize_list)**
```c
void initialize_list(Node** head) {
*head = NULL;
}
```
**3. 在链表末尾插入节点 (append_node)**
```c
void append_node(Node** head, int data) {
Node* newNode = create_node(data);
if (*head == NULL) {
*head = newNode;
return;
}
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
```
**4. 删除节点 (delete_node)**
```c
void delete_node(Node** head, int key) {
Node* temp = *head, *prev;
if (temp != NULL && temp->data == key) {
*head = temp->next; // 如果是第一个元素
free(temp); // 释放内存
return;
}
while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return; // 要找的关键字没找到
prev->next = temp->next;
free(temp); // 释放已找到节点的内存
}
```
你可以通过组合这些函数来实现链表的基本操作,如插入、删除等。
阅读全文