实训目的
- 掌握链表的基本概念和操作。
- 学习如何在C语言中实现链表的创建、插入和删除。
- 理解并实现链表的排序算法,如插入排序。
- 提高编程能力和解决实际问题的能力。
实训环境
- 操作系统:任意(Windows, Linux, macOS)
- 编译器:GCC/Clang/MSVC等C语言编译器
- 开发工具:任意文本编辑器或IDE(如Visual Studio Code, Eclipse, Code::Blocks等)
实训内容
1. 链表的基本概念
链表是一种动态数据结构,由节点组成,每个节点包含数据部分和指向下一个节点的指针。链表可以是单向的、双向的或循环的。在本实训中,我们将使用单向链表。
2. 链表的基本操作
2.1 定义链表节点
typedef struct Node {
int data;
struct Node* next;
} Node;
2.2 创建新节点
创建新节点的函数:
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
printf("内存分配失败。\n");
exit(1);
}
newNode->data = data;
newNode->next = NULL;
return newNode;
}
2.3 插入节点
插入节点可以有多种方式,这里我们实现在链表末尾插入节点:
void insertNode(Node** head, int data) {
Node* newNode = createNode(data);
if (*head == NULL) {
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}