(2) 在链式存储表示下,实现链表的初始化、删除和插入操作c语言
时间: 2024-10-08 19:02:29 浏览: 16
在C语言中,链表是一种动态数据结构,它利用节点(struct Node)包含数据和指向下一个节点的指针(通常是另一个Node类型的地址)来存储元素。下面是链表的常见操作——初始化、删除和插入的基本实现:
**1. 链表初始化(创建空链表)**:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
// 初始化一个空链表
void initializeList(Node** head) {
*head = NULL; // 初始化头指针为空
}
```
**2. 插入节点**:
```c
void insertNode(int value, Node** head) {
Node* newNode = (Node*)malloc(sizeof(Node)); // 动态分配内存
newNode->data = value;
newNode->next = *head; // 新节点的next指向当前头节点
if (*head != NULL) {
(*head)->next = newNode; // 如果链表非空,则修改头节点的next
} else {
*head = newNode; // 链表为空时,新节点既是头节点
}
}
```
**3. 删除节点(指定位置删除)**:
```c
void deleteNode(int value, Node** head) {
Node* current = *head;
Node* previous = NULL;
if (current && current->data == value) { // 如果链表非空且头节点就是要删除的节点
*head = current->next;
free(current); // 释放头节点
return;
}
while (current && current->data != value) {
previous = current;
current = current->next;
}
if (current == NULL) return; // 没找到要删除的节点
previous->next = current->next;
free(current); // 释放目标节点
}
```