用C语言编程实现单链表的各种基本操作(单链表的创建、插入、删除、查找、输出等操作),通过主函数调用,简单测试各基本函数的正确性。
时间: 2024-10-01 20:11:48 浏览: 32
c语言链表基本操作(带有创建链表 删除 打印 插入)
5星 · 资源好评率100%
在C语言中,单链表是一种常见的数据结构,主要用于动态存储和管理元素。下面是实现单链表的一些基本操作:
1. **创建链表** (初始化):
- 定义链表节点结构体 `struct Node` 包含一个数据域和指向下一个节点的指针。
```c
struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
};
```
2. **创建链表** (创建头节点并初始化):
- 使用 `malloc()` 分配内存并设置头节点。
```c
struct Node* createList() {
struct Node* head = malloc(sizeof(struct Node));
if (!head) {
printf("Memory allocation failed.");
return NULL;
}
head->next = NULL;
head->data = 0; // 或者你想存放的数据
return head;
}
```
3. **插入节点**:
- 创建新节点,然后调整当前节点的 `next` 指针指向新节点。
```c
void insertNode(struct Node** head, int value) {
struct Node* newNode = malloc(sizeof(struct Node));
if (!newNode) {
printf("Memory allocation failed.");
return;
}
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
```
4. **删除节点**:
- 需要处理空链表和有值节点的情况,可以先找到待删除节点的前驱节点。
```c
void deleteNode(struct Node** head, int value) {
struct Node* current = *head, *prev;
if (current && current->data == value) {
*head = current->next;
free(current);
return;
}
while (current && current->data != value) {
prev = current;
current = current->next;
}
if (current == NULL) return; // 没找到对应节点
prev->next = current->next;
free(current);
}
```
5. **查找节点**:
- 遍历链表直到找到匹配项,或遍历完整个链表表示未找到。
```c
struct Node* searchNode(struct Node* head, int value) {
struct Node* current = head;
while (current != NULL) {
if (current->data == value)
return current;
current = current->next;
}
return NULL;
}
```
6. **打印链表**:
- 可以通过递归或迭代方式遍历链表,并输出节点数据。
```c
void printList(struct Node* node) {
if (node == NULL) return;
printf("%d ", node->data);
printList(node->next);
}
int main() {
struct Node* list = createList();
// ... 进行其他操作如插入、删除等
printList(list); // 测试输出功能
// ... 其他测试
return 0;
}
```
阅读全文