上一篇
在学习 C语言链表 的过程中,很多初学者常常感到困惑:链表到底有什么用?如何编写和操作链表?本文将通过一个完整的链表应用实例,手把手带你理解 C语言数据结构 中最基础也最重要的结构之一——链表。无论你是编程小白还是刚接触数据结构的新手,都能轻松上手!
链表是一种线性数据结构,与数组不同,它不要求连续的内存空间。每个元素(称为“节点”)包含两部分:数据域和指针域。数据域存储实际数据,指针域则指向下一个节点。
首先,我们定义一个简单的单向链表节点结构:
#include <stdio.h>#include <stdlib.h>// 定义链表节点结构typedef struct Node { int data; // 数据域 struct Node* next; // 指针域,指向下一个节点} Node; 下面我们实现几个常用操作,构建一个完整的 链表操作教程。
Node* createNode(int value) { Node* newNode = (Node*)malloc(sizeof(Node)); if (!newNode) { printf("内存分配失败!\n"); return NULL; } newNode->data = value; newNode->next = NULL; return newNode;} void insertAtEnd(Node** head, int value) { Node* newNode = createNode(value); if (*head == NULL) { *head = newNode; return; } Node* temp = *head; while (temp->next != NULL) { temp = temp->next; } temp->next = newNode;} void printList(Node* head) { if (head == NULL) { printf("链表为空!\n"); return; } Node* temp = head; printf("链表内容: "); while (temp != NULL) { printf("%d ", temp->data); temp = temp->next; } printf("\n");} void deleteNode(Node** head, int key) { Node* temp = *head; Node* prev = NULL; // 如果头节点就是要删除的节点 if (temp != NULL && temp->data == key) { *head = temp->next; free(temp); return; } // 查找要删除的节点 while (temp != NULL && temp->data != key) { prev = temp; temp = temp->next; } // 如果没找到 if (temp == NULL) { printf("未找到值为 %d 的节点\n", key); return; } // 删除节点 prev->next = temp->next; free(temp);} 下面我们将上述函数整合,实现一个可以添加、查看和删除学生成绩的小程序:
int main() { Node* head = NULL; // 添加学生成绩 insertAtEnd(&head, 85); insertAtEnd(&head, 92); insertAtEnd(&head, 78); printList(head); // 输出: 85 92 78 // 删除成绩为92的学生 deleteNode(&head, 92); printList(head); // 输出: 85 78 // 释放内存(实际项目中应遍历释放) while (head != NULL) { Node* temp = head; head = head->next; free(temp); } return 0;} 通过这个 C语言链表应用实例,你应该已经掌握了链表的基本操作。链表是 C语言数据结构 的基石,后续学习栈、队列、图等结构都会用到它。记住:多写代码、多调试,才能真正掌握 链表操作教程 中的每一个细节!
关键词回顾:C语言链表、链表应用实例、C语言数据结构、链表操作教程
本文由主机测评网于2025-12-22发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251211477.html