用c语言写一个单链表中删除节点的函数
时间: 2024-10-09 20:10:21 浏览: 88
在C语言中,我们可以创建一个单链表删除节点的函数,通常这个函数需要接收两个参数:指向当前节点的指针(`struct Node*`)以及要删除节点的前一个节点指针(也可能是头结点)。假设我们有一个结构体`Node`表示链表中的一个节点,包含`data`和`next`成员:
```c
typedef struct Node {
int data; // 节点数据
struct Node* next; // 指向下一个节点的指针
} Node;
void deleteNode(Node** prev, Node* node) {
if (*prev == NULL) { // 如果是头节点
*prev = node->next;
} else {
(*prev)->next = node->next; // 否则更新前一个节点的next指针
}
free(node); // 释放删除的节点内存
}
```
此函数的工作原理是检查给定的`node`是否为头节点,如果是,则将`*prev`指向`node->next`;如果不是头节点,就简单地将`(*prev)->next`设置为`node->next`,然后释放`node`所占用的内存。
相关问题
用c语言写一个单链表的插入
以下是用 C 语言写一个单链表的插入的代码:
```
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
void insert(struct Node** head_ref, int new_data) {
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = (*head_ref);
(*head_ref) = new_node;
}
void printList(struct Node* node) {
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
}
int main() {
struct Node* head = NULL;
insert(&head, 1);
insert(&head, 2);
insert(&head, 3);
insert(&head, 4);
printf("Linked list: ");
printList(head);
return 0;
}
```
这段代码实现了一个单链表的插入,通过 `insert` 函数可以将新的节点插入到链表的头部,通过 `printList` 函数可以打印出整个链表的内容。
用c语言写一个单链表城市表
在C语言中,我们可以创建一个简单的单链表结构来表示城市数据。首先,我们需要定义一个节点结构体,包含城市名和指向下一个节点的指针。然后,我们会创建一个函数来添加城市、遍历列表以及打印所有城市。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
typedef struct City {
char name[50];
struct City* next;
} City;
// 添加新城市到链表
void addCity(City** head, const char* cityName) {
City* newNode = (City*)malloc(sizeof(City));
if (newNode == NULL) {
printf("Memory allocation failed.\n");
return;
}
strncpy(newNode->name, cityName, sizeof(newNode->name) - 1); // 转换null终止符
newNode->next = *head;
*head = newNode;
}
// 遍历并打印链表中的城市
void printCities(City* head) {
while (head != NULL) {
printf("%s -> ", head->name);
head = head->next;
}
printf("NULL\n");
}
int main() {
// 初始化空链表
City* head = NULL;
// 添加一些城市
addCity(&head, "北京");
addCity(&head, "上海");
addCity(&head, "广州");
// 打印链表中的城市
printCities(head);
return 0;
}
```
在这个示例中,我们先初始化了一个空链表`head`,然后通过`addCity`函数将城市名字添加到链表的头部,并使用`printCities`函数展示链表的内容。
阅读全文