当前位置: 首页 > 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语言创建、插入、删除和遍历单向链表的基本操作。在实陧过程中,要注意内存分配和释放,避免内存泄漏。链表是一种重要的数据结构,掌握链表的实现原理对于理解其他数据结构和算法也非常有帮助。

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

相关文章:

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

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

ideaSSM 工厂效能管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 工厂效能管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库&#xff…...

Java反射机制的讲解及其示例说明

Java 反射机制是指在运行时动态地获取类的信息以及操作对象的方式。它允许程序在运行时检查和操作类、方法、属性等,而不需要在编译时就确定这些属性。通过反射机制,我们可以在运行时动态地创建对象、调用方法、获取属性等。 Java 反射机制提供了以下主…...

20240309web前端_第二周作业_完成游戏导航栏

作业&#xff1a;游戏导航栏 成果展示&#xff1a; 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0…...

五、大模型-Prompt

一、prompt是什么 在大型语言模型集成中&#xff0c;"prompt" 是指您向模型提供的输入文本或指令&#xff0c;以引导模型生成特定类型的响应。这个 prompt 可以是一个问题、一段描述、一个任务说明&#xff0c;甚至是一部分对话历史记录等。通过设计和优化 prompt&a…...

【网络安全】 MSF提权

本文章仅用于信息安全学习&#xff0c;请遵守相关法律法规&#xff0c;严禁用于非法途径。若读者因此作出任何危害网络安全的行为&#xff0c;后果自负&#xff0c;与作者无关。 环境准备&#xff1a; 名称系统位数IP攻击机Kali Linux6410.3.0.231客户端Windows 76410.3.0.234…...

iPHoP:病毒宿主预测

Bitbucket 安装 conda create -c conda-forge -n iphop_env python 3 .8 mamba conda activate iphop_env mamba install -c conda-forge -c bioconda iphop iphop -h 下载数据库 iphop download --db_dir path_to_iPHoP_db #解压 iphop download --db_dir path_to_iP…...

网工内推 | 数通工程师,IE认证优先,五险一金,绩效奖

01 星网信通 招聘岗位&#xff1a;数通产品经理 职责描述&#xff1a; 1、售前技术支持&#xff1a;技术交流、产品选型报价、方案制作等工作&#xff1b; 2、招投标支持&#xff1a;项目招标参数撰写、标书质疑、应标文件技术部分撰写及资质文件归纳准备、现场讲标及技术澄清…...

2024 年 AI 辅助研发趋势将更加强调智能化、自动化和个性化

目录 前言 AI辅助研发的技术进展 行业应用案例 医药行业 汽车行业 电子行业 面临的挑战与机遇 技术挑战 伦理问题 数据安全 机遇和解决方案 未来趋势预测 1. 深度融合AI与研发流程 2. 智能研发平台的崛起 3. 强化AI与人类智慧的融合 前言 当谈到人工智能&#xff…...

Jackson 2.x 系列【1】概述

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 前言2. 什么是 JSON3. 常用 Java JSON 库4. Jackson4.1 简介4.2 套件4.3 模块4.…...

深入理解并优化Android中的文件描述符(FD)

文章目录 一、文件描述符&#xff08;FD&#xff09;概述二、为什么要优化文件描述符&#xff1f;三、实际开发中的文件描述符优化策略3.1 及时关闭文件和资源3.2 使用try-with-resources3.3 检查并优化第三方库3.4 使用文件描述符检查工具3.4.1 使用/proc文件系统3.4.2 使用ls…...

「JS 基础」异步解决方案入门

前言 为了解决Javascript 语言的执行环境是单线程所带来的问题&#xff0c;Javascript 将任务的执行模式分为两种&#xff1a;同步和异步 同步即为后一个任务等待前一个任务结束再继续执行&#xff0c;程序的执行顺序与任务的排列顺序是一致的 异步则完全不同&#xff0c;每…...

408学习笔记-16-C-动态内存管理

1、为什么要有动态内存分配 常规定义出来的变量&#xff0c;它们的大小都是已经规定好的&#xff0c;即在内存中开辟的内存空间都是固定的&#xff1b;且空间大小不可调整&#xff0c;可能会造成内存空间的浪费。 于是C语言引入了动态内存开辟功能&#xff0c;让程序员自己可…...

vuex - 21年的笔记 - 后续更新

vuex是什么 Vuex是实现组件全局状态&#xff08;数据&#xff09;管理的一种机制&#xff0c;方便的实现组件之间的数据的共享 使用vuex统一管理状态的好处 能够在vuex中集中管理共享的数据&#xff0c;易于开发和后期维护能够高效地实现组件之间的数据共享&#xff0c;提高…...

ngrok实现内网穿透

在使用jenkins进行自动化部署时&#xff0c;需要设置github的webhook钩子来触发构建&#xff0c;由于jenkins运行在自己的电脑上&#xff0c;因此需要通过内网穿透来接受http请求。 Install ngrok via Homebrew with the following command: brew install ngrok/ngrok/ngrokP…...

开发chrome扩展( 禁止指定域名使用插件)

mainfest.json: {"manifest_version": 3,"name": "ChatGPT学习","version": "0.0.2","description": "ChatGPT,GPT-4,Claude3,Midjourney,Stable Diffusion,AI,人工智能,AI","icons": {&quo…...

Flink:Lookup Join 实现与示例代码

本文要演示的是:在流上关联一张外部表(例如 MySQL 数据库中的一张维表),用于丰富流上的数据,实际上,这正是最普遍的 ”维表 Join“ 的实现方式。通过这种方式和外部维表关联时,依然能关联到最新变化的维度数据,所以才说这是 ”维表 Join“。Lookup Join 与 《Flink Tem…...

python基础知识(四)

if not x % 2 > if x % 2 ! 0 Python HTML和XML解析的第三方库是 Beautifull Soup 不属于软件设计原则是 自底向上 用来表示实体之间联系的是 二维表 当对关系R和S进行自然连接时&#xff0c;要求R和S含有一个或者多个共有的 属性&#xff08;关系就是二维表&#xff09…...

论文笔记:Llama 2: Open Foundation and Fine-Tuned Chat Models

导语 Llama 2 是之前广受欢迎的开源大型语言模型 LLaMA 的新版本&#xff0c;该模型已公开发布&#xff0c;可用于研究和商业用途。本文记录了阅读该论文的一些关键笔记。 链接&#xff1a;https://arxiv.org/abs/2307.09288 1 引言 大型语言模型&#xff08;LLMs&#xff…...

Unity UGUI之Toggle基本了解

在Unity中&#xff0c;Toggle一般用于两种状态之间的切换&#xff0c;通常用于开关或复选框等功能。 它的基本属性如图&#xff1a; 其中&#xff0c; Interactable&#xff08;可交互&#xff09;&#xff1a;指示Toggle是否可以与用户交互。设置为false时&#xff0c;禁用To…...

JMS, ActiveMQ 学习一则亓

开发个什么Skill呢&#xff1f; 通过 Skill&#xff0c;我们可以将某些能力进行模块化封装&#xff0c;从而实现特定的工作流编排、专家领域知识沉淀以及各类工具的集成。 这里我打算来一次“套娃式”的实践&#xff1a;创建一个用于自动生成 Skill 的 Skill&#xff0c;一是用…...

Mysql 11: 存储过程全解——从创建到使用

存储过程&#xff08;Stored Procedure&#xff09;是 MySQL 中预编译在数据库服务器上的 SQL 语句集合&#xff0c;可以封装复杂业务逻辑、减少网络交互、提升执行效率&#xff0c;是数据库开发的核心技能。本文围绕图片中的知识点&#xff0c;从创建、使用、删除到拓展&#…...

【2026奇点大会官方内参】:大模型微调5大避坑指南(含Meta/DeepSeek一线工程师未公开参数配置)

第一章&#xff1a;2026奇点智能技术大会&#xff1a;大模型微调最佳实践 2026奇点智能技术大会(https://ml-summit.org) 数据准备的核心原则 高质量微调始于精准的数据治理。训练样本需满足领域对齐、语义完整性与标注一致性三重标准。建议采用分层采样策略&#xff1a;70% …...

基于深度卷积⽹络的车牌识别系统的设计与实现

前言 传统中文车牌识别方法对场景约束较大&#xff0c;且算法实时性差&#xff0c;无法部署在边缘设备上。为解决这些问题&#xff0c;本文提出了一种基于YOLO的无约束场景中文车牌检测与识别方法。该方法利用YOLO目标检测算法进行车牌定位&#xff0c;并结合端到端的识别网络进…...

告别VNC卡顿!用NoMachine远程桌面连接树莓派5的保姆级教程(含ARM架构选择避坑)

树莓派5远程桌面革命&#xff1a;NoMachine极致流畅体验全指南 树莓派作为开发者的迷你工作站&#xff0c;远程桌面体验一直是痛点。传统VNC协议的高延迟让代码调试、图形操作变得异常痛苦。本文将彻底改变这一局面——基于NX协议的NoMachine能实现60fps的流畅远程桌面&#xf…...

【LeetCode刷题日记】:从 LeetCode 经典题看哈希表的场景化应用---数组、HashSet、HashMap 选型与算法实战

&#x1f525;个人主页&#xff1a;北极的代码&#xff08;欢迎来访&#xff09; &#x1f3ac;作者简介&#xff1a;java后端学习者 ❄️个人专栏&#xff1a;苍穹外卖日记&#xff0c;SSM框架深入&#xff0c;JavaWeb ✨命运的结局尽可永在&#xff0c;不屈的挑战却不可须臾或…...

龙虾白嫖指南,请查收~胃

1. 什么是 Apache SeaTunnel&#xff1f; Apache SeaTunnel 是一个非常易于使用、高性能、支持实时流式和离线批处理的海量数据集成平台。它的目标是解决常见的数据集成问题&#xff0c;如数据源多样性、同步场景复杂性以及资源消耗高的问题。 核心特性 丰富的数据源支持&#…...

Midscene.js:用自然语言轻松实现全平台UI自动化的终极解决方案

Midscene.js&#xff1a;用自然语言轻松实现全平台UI自动化的终极解决方案 【免费下载链接】midscene AI-powered, vision-driven UI automation for every platform. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 还在为编写复杂的自动化脚本而烦恼吗&…...

2026奇点智能技术大会核心成果发布(AI原生搜索系统白皮书首曝)

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI原生搜索系统 2026奇点智能技术大会(https://ml-summit.org) AI原生搜索系统是本届大会的核心发布成果&#xff0c;它不再将大语言模型作为后置重排模块&#xff0c;而是从索引构建、查询理解、向量-符号协同推理到结果生…...

3分钟快速上手Aider:终极AI结对编程助手完全指南

3分钟快速上手Aider&#xff1a;终极AI结对编程助手完全指南 【免费下载链接】aider aider is AI pair programming in your terminal 项目地址: https://gitcode.com/GitHub_Trending/ai/aider 你是否渴望在终端中拥有一个能理解你代码库的AI编程伙伴&#xff1f;Aider…...