c语言链表的完整代码
时间: 2024-09-05 22:03:12 浏览: 63
链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在C语言中,实现链表通常需要定义节点结构体,并创建和操作这些节点的函数。以下是一个简单的单向链表的完整示例代码,包括创建节点、插入节点到链表头部、遍历链表和释放链表内存的基本操作。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点的结构体
struct Node {
int data;
struct Node* next;
};
// 创建一个新节点
struct Node* createNode(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
if (newNode == NULL) {
printf("内存分配失败\n");
exit(0);
}
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// 在链表头部插入一个新节点
void insertAtHead(struct Node** head, int data) {
struct Node* newNode = createNode(data);
newNode->next = *head;
*head = newNode;
}
// 遍历链表并打印节点数据
void printList(struct Node* head) {
struct Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
// 释放链表占用的内存
void freeList(struct Node* head) {
struct Node* current = head;
struct Node* next;
while (current != NULL) {
next = current->next;
free(current);
current = next;
}
}
int main() {
struct Node* head = NULL; // 初始化链表为空
// 插入节点到链表头部
insertAtHead(&head, 1);
insertAtHead(&head, 2);
insertAtHead(&head, 3);
// 打印链表
printf("链表元素:");
printList(head);
// 释放链表占用的内存
freeList(head);
return 0;
}
```
这段代码首先定义了一个链表节点的结构体`Node`,然后实现了创建节点、在链表头部插入节点、打印链表和释放链表内存的函数。`main`函数中创建了一个空链表,然后通过`insertAtHead`函数向链表头部插入了三个节点,并通过`printList`函数打印了链表中的所有节点数据。最后,使用`freeList`函数释放了链表占用的内存。
阅读全文