用c语言实现线性链表
时间: 2024-10-04 07:02:01 浏览: 29
C语言之线性链表1
在C语言中,线性链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。以下是创建简单线性链表的基本步骤:
1. **定义链表节点**:
```c
typedef struct Node {
int data; // 节点的数据域
struct Node* next; // 指向下一个节点的指针
} Node;
```
2. **初始化链表**:
如果链表为空,可以声明一个全局头结点并设置next为NULL。
```c
Node* head = NULL;
```
3. **添加节点**:
```c
void addNode(Node** head, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
```
4. **访问和遍历链表**:
```c
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
```
5. **删除节点**:
删除特定值的节点需要维护两个指针:一个用于找到节点,另一个用于更新前一个节点的next指针。
```c
void deleteNode(Node** head, int value) {
Node* temp = *head, *prev = NULL;
if (temp != NULL && temp->data == value) {
*head = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->data != value) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return; // 未找到该值
prev->next = temp->next;
free(temp);
}
```
阅读全文