单链表的基本操作实现c语言
时间: 2024-10-17 17:01:21 浏览: 34
单链表是一种线性的数据结构,每个节点包含两个部分:数据域用于存储值,指针域指向下一个节点。在C语言中,我们可以实现单链表的基本操作,如创建、插入、删除和遍历。以下是几个基本操作的实现:
1. **创建链表头节点**:
```c
typedef struct Node {
int data; // 节点的数据
struct Node* next; // 指向下一个节点的指针
} Node;
```
2. **初始化空链表**:
```c
Node* createList() {
Node* head = NULL; // 初始化链表头指针
return head;
}
```
3. **在链表末尾添加元素** (插入):
```c
void append(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 deleteNode(Node** head, int position) {
if (*head == NULL) return;
Node* temp = *head;
Node* prev = NULL;
int count = 0;
if (position == 0) { // 删除头节点
*head = (*head)->next;
free(temp);
return;
}
while (temp != NULL && count < position - 1) {
prev = temp;
temp = temp->next;
count++;
}
if (temp == NULL) return; // 如果越界
prev->next = temp->next;
free(temp); // 释放已删除节点的内存
}
```
5. **遍历链表**:
```c
void printList(Node* head) {
if (head == NULL) {
printf("链表为空\n");
return;
}
Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
```
阅读全文