c语言 定义一个单链表并增加、删除、修改、查找一个节点
时间: 2023-07-10 16:12:12 浏览: 94
用C语言创建一个单链表的方法
好的,我来为您讲解如何在C语言中定义一个单链表,并实现增加、删除、修改、查找节点的操作。
首先,我们需要定义一个节点的结构体,包括节点值和指向下一个节点的指针,如下所示:
```c
struct Node {
int value;
struct Node* next;
};
```
然后,我们定义一个头节点,作为链表的起始位置,如下所示:
```c
struct Node* head = NULL;
```
接下来,我们可以实现以下几个操作:
1. 增加节点
```c
void addNode(int val) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); // 新建节点
newNode->value = val;
newNode->next = NULL;
if (head == NULL) { // 如果链表为空,将头节点指向新节点
head = newNode;
} else { // 如果链表不为空,找到链表尾部,将尾节点指向新节点
struct Node* current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
```
2. 删除节点
```c
void removeNode(int val) {
struct Node* current = head;
struct Node* prev = NULL;
while (current != NULL) { // 遍历链表
if (current->value == val) { // 如果找到了要删除的节点
if (prev == NULL) { // 如果要删除的节点是头节点
head = current->next;
} else { // 如果要删除的节点不是头节点
prev->next = current->next;
}
free(current); // 释放节点所占用的空间
return;
}
prev = current;
current = current->next;
}
}
```
3. 修改节点
```c
void updateNode(int oldVal, int newVal) {
struct Node* current = head;
while (current != NULL) { // 遍历链表
if (current->value == oldVal) { // 如果找到了要修改的节点
current->value = newVal; // 修改节点的值
return;
}
current = current->next;
}
}
```
4. 查找节点
```c
struct Node* findNode(int val) {
struct Node* current = head;
while (current != NULL) { // 遍历链表
if (current->value == val) { // 如果找到了要查找的节点
return current;
}
current = current->next;
}
return NULL; // 如果没有找到,返回NULL
}
```
以上就是在C语言中定义单链表,并实现增加、删除、修改、查找节点的操作的代码。希望能对您有所帮助!
阅读全文