当前位置: 首页 > news >正文

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

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

目录

1. 定义节点结构体

2. 初始化链表

3. 插入节点

4. 删除节点

5. 遍历链表

6. 主函数


1. 定义节点结构体

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

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

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

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

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

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

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

Node* deleteNode(Node* head, int data) {Node* current = head;Node* prev = NULL;while (current != NULL) {if (current->data == data) {if (prev == NULL) {head = current->next;} else {prev->next = current->next;}free(current);break;}prev = current;current = current->next;}return head;
}
5. 遍历链表

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

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

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

int main() {Node* head = NULL;head = insertNode(head, 1);head = insertNode(head, 2);head = insertNode(head, 3);printf("Initial List: ");printList(head);head = deleteNode(head, 2);printf("List after deleting 2: ");printList(head);return 0;
}

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

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

http://www.lryc.cn/news/323238.html

相关文章:

  • ideaSSM 工厂效能管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目
  • Java反射机制的讲解及其示例说明
  • 20240309web前端_第二周作业_完成游戏导航栏
  • 五、大模型-Prompt
  • 【网络安全】 MSF提权
  • iPHoP:病毒宿主预测
  • 网工内推 | 数通工程师,IE认证优先,五险一金,绩效奖
  • 2024 年 AI 辅助研发趋势将更加强调智能化、自动化和个性化
  • Jackson 2.x 系列【1】概述
  • 深入理解并优化Android中的文件描述符(FD)
  • 「JS 基础」异步解决方案入门
  • 408学习笔记-16-C-动态内存管理
  • vuex - 21年的笔记 - 后续更新
  • ngrok实现内网穿透
  • 开发chrome扩展( 禁止指定域名使用插件)
  • Flink:Lookup Join 实现与示例代码
  • python基础知识(四)
  • 论文笔记:Llama 2: Open Foundation and Fine-Tuned Chat Models
  • Unity UGUI之Toggle基本了解
  • 鸿蒙Harmony应用开发—ArkTS-全局UI方法(日期滑动选择器弹窗)
  • 华岳M9制造企业管理软件业务流程 2/4
  • echarts geo地图加投影两种方法
  • GPT实战系列-LangChain的Prompt提示模版构建
  • Docker容器中的mysql自动备份脚本
  • 品精酿啤酒:畅享生活,享受快乐
  • 进程创建,程序加载运行,以及进程终止,什么是僵尸进程,什么是孤儿进程
  • [python]bar_chart_race设置日期格式
  • Apache FtpServer在Windows上下载安装与使用
  • CVE-2024-24112 XMall后台管理系统 SQL 注入漏洞分析
  • jwt以及加密完善博客系统