单链表demo(C语言)

c语言单链表demo 对单链表的建立、输出、统计、查找、插入、删除做了详细的分析与编码的小demo 立即下载

单链表是一种线性数据结构,其中每个元素都是一个独立的对象,每个元素(我们称之为节点)都有一个指向下一个节点的引用。

首先,我们需要定义链表节点的数据结构。每个节点都有一个数据字段和一个指向下一个节点的指针。

typedef struct Node {
    int data; // 数据字段
    struct Node* next; // 指向下一个节点的指针
} Node;

创建新的节点:

Node* createNode(int data) {
    // 动态分配内存
    Node* newNode = (Node*)malloc(sizeof(Node));

    if(newNode == NULL) {
        printf("内存分配失败\n");
        exit(0);
    }

    // 初始化新节点
    newNode->data = data;
    newNode->next = NULL;

    return newNode;
}

我们还需要一些操作链表的函数,例如插入新节点、删除节点和遍历链表。

插入新节点:

void insertNode(Node** head, int data) {
    // 创建新节点
    Node* newNode = createNode(data);

    // 新节点将被插入到链表的前端
    newNode->next = *head;

    // 更新头部指针
    *head = newNode;
}

删除节点:

void deleteNode(Node** head, int key) {
    Node* temp = *head, *prev;

    // 如果头部节点就是要删除的节点
    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) return;

    // 删除找到的节点
    prev->next = temp->next;

    free(temp);
}

遍历链表:

void printList(Node* node) {
    while(node != NULL) {
        printf("%d ", node->data);
        node = node->next;
    }
}

这就是使用C语言实现单链表的基本步骤。

ENVI5.6 批量处理GF-2/GF-6/GF-7:从安装到融合的完整自动化流程 本文详细介绍了ENVI5.6环境下批量处理GF-2/GF-6/GF-7卫星数据的完整自动化流程,包括环境配置、工具安装、正射校正、图像融合等关键步骤。通过实战案例和优化技巧,帮助用户高效完成高分卫星影像处理,提升工作效率。特别针对GF-6和GF-7的特殊处理要点进行了深入解析。 阅读详情

相关推荐

百度飞桨+文心大模型实战:生成式AI工程师认证备考全攻略(含真题解析)

本文详细解析百度飞桨与文心大模型结合的生成式AI工程师认证备考策略,涵盖认证体系、学习路径、核心技能突破及真题分析。帮助开发者掌握大模型原理、飞桨平台操作和文心大模型应用,高效通过工信部与百度联合认证考试。

loss4bartender的博客 682

数据结构(C语言) -- 单链表demo

头节点的单链表

weixin_44977283的博客 214

2017阿里内推笔试题--算法工程师(运筹优化)

2017阿里内推笔试题–算法工程师(运筹优化)题目沐哲是一个菜鸟仓库的一个拣货员,但他有非常个怪异的习惯。每次拣货的重量都要比之前拣的一个轻,每次拣到货后都可以得到1块钱,沐哲想知道这样最多能赚多少钱 32 34 7 33 21 2 13 12 3 11 26 36 16 30 22 1 24 14 20 23 25 5 19 29 27 15 9 17 31 4 6 18 8 10 3

shawpan的专栏 1万+

数据结构之链表

链表(Liked List) 一、链表的概念 链表是有序的列表,但是在内存中链表的各个节点不一定是连续的。 下图是链表在内存中的存储结构示意图 总结: a.链表是以节点的方式存储,链式存储 b.每个节点包含了data域(存值)、next域(指向下一个节点) c.链表的各个节点不一定是连续存储的 d.链表分带头节点的链表和没有带头节点的链表,根据实际的需求来确定 二、单链表 单链表(带头结点)逻辑结构示意图,实际并不连续 . 单链表的创建,不按编号添加,头节点只写一次,思路分析如下 上述

Blooming death的博客 271

帆软报表JS导出避坑指南:如何正确处理sessionid和参数传递

本文深入探讨了帆软报表中通过JavaScript实现一键导出的关键技术,重点解析了如何正确获取并传递sessionid以确保会话不丢失,以及如何构造包含必要参数的导出URL。文章详细对比了预览后导出与直接URL导出两种方式的差异,并提供了从参数拼接、前端触发下载到高级场景(如SPA集成)的完整避坑指南,帮助开发者构建稳定可靠的自定义导出功能。

weixin_42522857的博客 162

SAP ABAP开发避坑:BAPI_MATVAL_PRICE_CHANGE调用报‘估价未维护’的完整解决流程

本文深入解析SAP ABAP开发中调用BAPI_MATVAL_PRICE_CHANGE函数时遇到的'估价未维护'错误,提供从基础配置检查到CKML_PRICE_SEND表维护的完整解决方案。通过实战案例和代码示例,帮助开发者快速定位问题并实现批量价格更新的自动化处理,提升开发效率。

weixin_28705087的博客 427

单链表的实现

链表是最基本的线性数据结构之一,数组也是一种线性结构,我们使用链表的目的是为了克服数组结构的一些弱点和局限性。(数组的弱点是定义后不能去修改大小,插入和删除元素也很吃力,链表可以解决这些问题)。       数组在内存中的排列特征是元素一个紧挨着一个排列 ,优点是随机访问每个元素会很快,但大小不能扩张,插入删除不方便。如果我们要在数组中间插入一个元素,需要移动很多元素。 下面看

weixin_39800712的博客 909

【亲测】ubuntu20.4 安装CUDA11.8

一步一步搭建C++ CUDA CUDNN TENSORRT OPENCV DNN ONNXRUNTIME推理环境

weixin_40950590的博客 3894

链表-java实现单向链表DEMO

以下为单向链表具体实现类(以下程序直接放入自定义类中) private int size;//链表节点的个数 private Node head;//头节点 public SingleLinkedList(){ size = 0; head = null; } //链表的每个节点类 ...

a770467311的博客 408

python——模拟砍价

类型:随机数。

m0_62488776的博客 1971

NX二次开发 计算多个体的最小包围盒

多个体的最小包围盒

weixin_72680115的博客 430

【数据结构与算法】别再只会写 demo!C 语言通讯录实战:从单链表底层到业务功能全封装

本文基于单链表实现完整的通讯录功能,通过模块化设计将业务逻辑与底层数据结构分离。通讯录系统提供联系人增删改查等核心功能,采用前置声明解决头文件循环依赖问题。底层使用单链表存储联系人信息,包括姓名、性别、年龄等字段。系统通过Test.c实现用户交互界面,Contacts.h定义数据结构接口,Contacts.c实现业务逻辑,SList.h提供链表基础操作。项目展示了C语言中数据结构与业务功能的结合方法,以及模块化开发思想,适合初学者理解链表应用和项目组织方式。

小龙报的博客 1742

Darknet-Yolov3 移植过程

本教程面向使用寒武纪平台进行深度学习推理任务的开发者。针对当前主流检测网络darknet-yolov3,进行寒武纪平台的移植。开发者对照移植过程,能够利用寒武纪智能处理器设备完成多种场景的目标检测任务。本实验代码基于 Neuware 1.6.1 与 Python 2.7 环境。

shengyin714959的博客 438

LinkedList.h

【代码】LinkedList.h。

白日梦想家的博客 265

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C语言实现单链表

单链表是一种链式存取的数据结构,,其中数据以节点来表示,每个节点由一个数据元素和一个指向后继元素存储位置的指针构成,在这里,我通过3个文件来编写单链表:list.h list.c test.c。

k0115的博客 526

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C语言——一元多项式定义求和 [单链表] (数据结构)

[单链表]一元多项式定义求和

GodOuO 3万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C语言:合并两个有序的单链表

如何使用c语言合并两个有序的单链表 基本思路: 创建新的头结点,使用while循环依次比较两个链表的值,并改变next的指向,破环原来两个链表的结构,当其中一个链表的指针域为NULL时循环结束,并使指针指向另一个链表就完成了新链表的创建。 demo (IDE:vs2017) #include<stdio.h> struct node { int data; struc...

qq_43432875的博客 3159

C语言数据结构篇——单链表的创建,插入,节点删除和打印等操作

线性表的顺序存储称为顺序表,而链表就是线性表的链式存储,而链表相对于顺序表的一个特点就是可以实现存储空间的动态管理,另一个就是每个节点的地址可能是不连续的,所以可以提高空间利用率,并且每个节点都由数据域和指针域构成。如果每个节点中只有指向后继节点的指针,那这就是我今天要分享的内容——单链表。 链表有很多种写法,有很多人定义一个节点结构体,又有部分人喜欢像顺序表一样定义一个头结点还有各种各样的写法,而我比较喜欢定义一个头结点的来保存链表的信息。那简单理解也就到这里了,下面给大家写一下以便大家可以更加直观的理

Demo不是emo的博客 6469

C语言实现单链表(带头节点)

C语言在实现单链表存储时需要注意的几点: 1.定义结构体,typedef:用于给结构体另命名 // 定义结构体类型 typedef struct Node{ int data; struct Node *next; }Node,*LinkedList; 2.链表初始化 // 链表初始化 LinkedList LinkedListInit(){ Node ...

weixin_34221036的博客 897

C 语言基于宏的泛型编程实现单链表

泛型编程很有用,但是 C 语言长期不支持( C11 引入了 _Generic 关键字,可以用于初步的泛型编程)。我们可以用宏来实现一个泛型编程的单链表。

weixin_42893582的博客 278

带头结点单链表排序操作(C语言)

【代码】带头结点单链表排序操作(C语言)

Flying__fish___的博客 387

基于单链表实现直接插入排序算法详解

插入排序属于稳定排序法,是一种常用的排序算法。直接插入排序算法可以利用静态数组来实现,也可以使用静态链表或者单链表来实现。本文给出了直接插入算法的单链表实现方法。

sunnyoldboy博客 9831

c语言结构体和联合体,C语言结构体和联合体

1、单链表插入#include #include #define FALSE 0#define TRUE 1typedef struct NODE{STRUCT NODE *link;int value;}Node;int sll_insert(Node *current,int newvalue){Node *previous;Node *new;while(current->valuep...

weixin_34644635的博客 621

简单的Demo,如何手撕单链表从操作

1111

qq_38312037的博客 262

简易通讯录小demo (C) - 可进行文件读取

简易的通讯录小程序 总共有9个功能 1.通讯录初始化 2.从磁盘文件读取通讯录 3.求通讯录记录中的条数 4.读取第n条记录 5.插入一条记录 6.删除一条记录 7.显示通讯录 8.按姓名或者手机号进行查找 9.退出程序 程序用devcpp编写的. 采用多文件分开的形式 如果同样用这款软件不能编译的话…需要先把所有.o文件删除,然后进行编译. 如果是使用vs这...

weixin_42947972的博客 562

双向链表C语言实现

双向链表与单链表的区别在于多了一个指向上一个节点的指针prevint data;}Node;

m0_46893236的博客 505
上一篇: 大小端问题以及转换——C语言
下一篇: CRC-16 Modbus校验含代码
DennisReYoonjiho
博客等级 码龄7年 216粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值