当前位置:   article > 正文

数据结构——单向链表(C语言版)

数据结构——单向链表(C语言版)

数据结构和算法中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在C语言中,我们可以使用指针来实现单向链表。下面将详细介绍如何用C语言实现单向链表。

目录

1. 定义节点结构体

2. 初始化链表

3. 插入节点

4. 删除节点

5. 遍历链表

6. 主函数


1. 定义节点结构体

首先,我们需要定义表示链表节点的结构体。每个节点包含一个数据域和一个指向下一个节点的指针域。

  1. typedef struct Node {
  2. int data;
  3. struct Node* next;
  4. } Node;
2. 初始化链表

接下来,我们需要编写函数来初始化链表。初始化链表时,我们将头指针指向NULL,表示链表为空。

Node* head = NULL;
3. 插入节点

实现在链表的头部插入节点的函数:

  1. Node* insertNode(Node* head, int data) {
  2. Node* newNode = (Node*)malloc(sizeof(Node));
  3. newNode->data = data;
  4. newNode->next = head;
  5. return newNode;
  6. }
4. 删除节点

实现删除指定数值节点的函数:

  1. Node* deleteNode(Node* head, int data) {
  2. Node* current = head;
  3. Node* prev = NULL;
  4. while (current != NULL) {
  5. if (current->data == data) {
  6. if (prev == NULL) {
  7. head = current->next;
  8. } else {
  9. prev->next = current->next;
  10. }
  11. free(current);
  12. break;
  13. }
  14. prev = current;
  15. current = current->next;
  16. }
  17. return head;
  18. }
5. 遍历链表

实现遍历链表并打印节点数据的函数:

  1. void printList(Node* head) {
  2. Node* current = head;
  3. while (current != NULL) {
  4. printf("%d -> ", current->data);
  5. current = current->next;
  6. }
  7. printf("NULL\\n");
  8. }
6. 主函数

在主函数中测试链表操作:

  1. int main() {
  2. Node* head = NULL;
  3. head = insertNode(head, 1);
  4. head = insertNode(head, 2);
  5. head = insertNode(head, 3);
  6. printf("Initial List: ");
  7. printList(head);
  8. head = deleteNode(head, 2);
  9. printf("List after deleting 2: ");
  10. printList(head);
  11. return 0;
  12. }

通过以上步骤,我们实现了用C语言创建、插入、删除和遍历单向链表的基本操作。在实陧过程中,要注意内存分配和释放,避免内存泄漏。链表是一种重要的数据结构,掌握链表的实现原理对于理解其他数据结构和算法也非常有帮助。

在接下来我们也将学习双向链表等更有意思的东西,如果本篇有不理解的地方,欢迎私信我或在评论区指出,期待与你们共同进步。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/295472
推荐阅读
相关标签
  

闽ICP备14008679号