C语言实现结构体链表
时间: 2024-12-18 09:04:21 浏览: 6
在C语言中,结构体链表是一种数据结构,它将结构体作为节点,并通过指针相连形成链式存储。以下是基本的结构体链表实现步骤:
1. 定义链表节点结构体(Node),包含结构体变量本身的数据以及指向下一个节点的指针:
```c
typedef struct Node {
// 结构体变量
int value;
// 指向下一个节点的指针
struct Node* next;
} ListNode;
```
2. 初始化链表的头结点(通常设为NULL表示空链表):
```c
ListNode* head = NULL;
```
3. 插入节点到链表:
- 创建新节点并分配内存
- 如果链表为空,直接设置头结点
- 否则遍历到最后一个节点,将其next指针指向新节点
```c
void insertNode(ListNode** head, int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->value = value;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
ListNode* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
```
4. 删除节点(例如删除值为特定值的节点):
- 遍历链表找到待删除节点
- 如果找到了,更新前一个节点的next指针为当前节点的next
```c
void deleteNode(ListNode** head, int value) {
if (*head == NULL) return;
ListNode* temp = *head;
if (temp->value == value) {
*head = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->value != value) {
temp = temp->next;
}
if (temp == NULL) return; // 节点未找到
ListNode* prev = temp;
prev->next = temp->next;
free(temp); // 释放节点内存
}
```
5. 遍历链表:
```c
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d ", temp->value);
temp = temp->next;
}
printf("\n");
}
```
阅读全文