数据结构单链表c语言基本算法
时间: 2024-10-07 09:04:53 浏览: 32
数据结构中的单链表是一种线性的数据结构,每个节点包含两个部分:数据域用于存储数据,指针域(或称为链接)指向下一个节点。以下是C语言中单链表的一些基本操作:
1. **创建链表**:
- 初始化链表头节点通常设为`NULL`。
```c
struct Node {
int data;
struct Node* next;
};
struct Node* head = NULL; // 空链表
```
2. **插入节点**:
- 可以在链表头部、尾部或指定位置插入新节点。
```c
void insertAtBegin(struct Node** head, int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = *head;
*head = newNode;
}
```
3. **删除节点**:
- 删除某个节点需要记录前一个节点,以便更新其`next`指针。
```c
void deleteNode(struct Node** head, int key) {
struct Node* temp = *head, *prev = NULL;
if (temp && temp->data == key) {
*head = temp->next; // 如果头结点要删除
free(temp);
return;
}
while (temp && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return; // 没找到要删除的节点
prev->next = temp->next;
free(temp); // 释放内存
}
```
4. **查找节点**:
```c
struct Node* search(struct Node* head, int key) {
struct Node* current = head;
while (current != NULL) {
if (current->data == key) return current;
current = current->next;
}
return NULL; // 找不到返回NULL
}
```
5. **遍历链表**:
```c
void printList(struct Node* node) {
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
}
```
阅读全文