数据结构(四)双向链表

文章目录

  • 一、概念
  • 二、无头双向链表示意图
  • 三、操作
    • (一)定义结构体
    • (二)创建链表
      • 1. 函数定义
      • 2. 注意点
      • 3. 代码实现
    • (三)插入
      • 1. 函数定义
      • 2. 注意点
      • 3. 代码实现
    • (四)删除
      • 1. 函数定义
      • 2. 注意点
      • 3. 代码实现
    • (五)修改
      • 1. 函数定义
      • 2. 注意点
      • 3. 代码实现
    • (六)查询
      • 1. 函数定义
      • 2. 注意点
      • 3. 代码实现
    • (七)打印
      • 1. 函数定义
      • 2. 注意点
      • 3. 代码实现

一、概念

每个节点有一个数据域存放数据,一个前指针域指向前一节点,一个后指针域指向后一节点

优点是可以较低难度找到前一节点,缺点是占用内存空间较大

二、无头双向链表示意图

在这里插入图片描述

三、操作

(一)定义结构体

typedef struct twolist
{struct twolist *prv;int data; //以int型数据举例,可以放结构体成员struct twostack *next;
}ls_t;

(二)创建链表

1. 函数定义

int create_list(ls_t **my_list,int num);

创建第一个数据节点
初始化数据节点

2. 注意点

  1. 入参合理性检查
  2. 第一个数据节点的前指针和后指针均初始化为NULL

3. 代码实现

int create_list(ls_t **my_list,int num){if(NULL==my_list) return -1;*my_list=(ls_t *)malloc(sizeof(ls_t));if(NULL==*my_list) return -1;//初始化(*my_list)->prv=NULL;(*my_list)->next=NULL;(*my_list)->data=num;return 0;
}

(三)插入

在这里插入图片描述

1. 函数定义

2. 注意点

3. 代码实现


(四)删除

在这里插入图片描述

1. 函数定义

2. 注意点

3. 代码实现


(五)修改

1. 函数定义

2. 注意点

3. 代码实现


(六)查询

1. 函数定义

2. 注意点

3. 代码实现


(七)打印

1. 函数定义

int print_list(ls_t *my_list);

2. 注意点

  1. 入参合理性检查

3. 代码实现

int print_list(ls_t *my_list){if(NULL==my_list) return -1;//打印除了最后一个元素的所有元素ls_t *ptemp=my_list;while(NULL!=ptemp->next){printf("%d ",ptemp->data);ptemp=ptemp->next;}//打印最后一个元素printf("%d ",ptemp->data);putchar(10);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/17179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

B端:ElementUI、AntDesign、若依等看腻了,来点不一样的。

现在对ElementUI、AntDesign和若依这些 UI 框架感到厌倦了,本次给大家分享一些更加个性化的UI界面。

MyBaitsPlus随笔

初识MyBaitsPlus 文章目录 初识MyBaitsPlus1.介绍优势 2 .简单使用1.添加依赖:2.配置数据源:3.编写实体类:4.编写Mapper接口:5.编写Service接口:6.编写Service实现类:7.使用Service进行操作:8.配…

干货|图生代码实例整理,让你的代码更高效

前言 “图生代码”。这项新功能允许开发人员直接利用产品设计图一键生成相应的代码,极大地提高了编程效率和研发速度。甚至会未来软件开发可能迎来一场革命性的变革。但图生代码究竟能直到什么程度?本文结合一款图生代码的实例程序整理了一些有代表意义…

C语言 数组——排序算法的函数实现

目录 交换法排序 用交换法对成绩数组升序排序 选择法排序 冒泡法排序 归并法排序 交换法排序 用交换法对成绩数组升序排序 选择法排序 冒泡法排序 归并法排序

期望薪资30k字节java2面,A给B转账的同时B给A转账怎么并发量最高

一面 1、自我介绍 2、详细介绍一下自己的做的项目?根据项目提了一些问题 3、hashmap原理 4、B树原理? 5、final禁止重排序原理? 6、设计一个榨汁机类,面向对象怎么设计? 7、get、post区别,使用场景&…

已解决ModuleNotFoundError : No module named ‘pandas亲测有效!!!

已解决ModuleNotFoundError : No module named ‘pandas亲测有效!!! 亲测有效 报错问题解决思路解决方法 报错问题 在运行Python代码时,你可能会遇到以下报错信息: ModuleNotFoundError: No module named pandas这个…

华为昇腾310B初体验,OrangePi AIpro开发板使用测评

0、写在前面 很高兴收到官方的OrangePi AIpro开发板测试邀请,在过去的几年中,我在自己的博客写了一系列有关搭载嵌入式Linux系统的SBC(单板计算机)的博文,包括树莓派4系列、2K1000龙芯教育派、Radxa Rock5B、BeagleBo…

攒粒是什么?怎么用攒粒赚钱?

攒粒简介 攒粒的前身是91问问,隶属于上海道道永泉市场调查有限公司,是一家专业的全球在线调研服务公司,也是是国内排名前列的社区调查之一,10年在线调研,600万会员亲身体验,提供网络调查、市场调查、问卷调…

KT6368A蓝牙芯片AT命令会被透传出去,指令对为什么会被透传出去

一、简介 KT6368A再被连接之后,AT命令会被透传出去。被透传的这组AT命令是符合文档要求,不应被透传,实际却经常被透传。并且可以每次都复现 详细描述 有问题部分的串口数据监控结果如下:其中41 54 2B 42 4D 46 30 41 46 42 43 3…

从零自制docker-15-【实现 mydocker run -d 支持后台运行容器】

文章目录 实现目的莫名奇妙的问题对之前upper层出现root补充对run某些命令出现找不到文件或目录的原因代码效果 实现目的 docker run -d时容器在后台运行,而不会进入命令行交互形式 首先是需要添加-d选项然后设置当添加-d选项时候主进程不会等待子进程&#xff0c…

生意人【变通 VS 正常 、先义后利、正确的反省法】

冷 VS 热 冷:慢慢吞吞 热:见面热络 有钱大家花,越花越多 对什么的人也要讲什么样的话 获取的两种方式:变通 VS 正常 变通有变通的方式正常有正常的轨道 不敢做而来骂他说你不做、话不说满,人不自夸 先义后利…

Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版

Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版 Rocky Linux 由 CentOS 项目的创始人 Gregory Kurtzer 领导 请访问原文链接:Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版,查看最新版。原创作品,转载请保留出处…

Keras深度学习框架第三十讲:在KerasTuner中处理失败的训练

1、绪论 KerasTuner程序可能会运行很长时间,因为每个模型的训练可能需要很长时间。我们不希望程序仅仅因为一些试验随机失败就停止运行。 本文将讨论在KerasTuner中如何处理失败的训练,包括: 如何在搜索过程中容忍失败的训练如何在构建和评…

GPT-4o: 未来的智能助手

GPT-4o: 未来的智能助手 在这个信息爆炸的时代,人工智能(AI)已经成为我们生活中不可或缺的一部分。作为OpenAI最新推出的语言模型,GPT-4o不仅继承了前几代模型的优点,还在多个方面进行了显著的提升。本文将带你深入了解…

DreamerV3阅读笔记

DreamerV3 文章希望解决的一个挑战是用固定的hyperparameter来同时处理不同domain的任务。文章发现,通过结合KL balancing 和free bits可以使得world model learn without tuning(是指上面这件事,即不需要对不同任务改变hyperparameter&#…

2024年电工杯高校数学建模竞赛(B题) 建模解析| 大学生平衡膳食食谱的优化设计

问题重述及方法概述 问题1:膳食食谱的营养分析评价及调整 数学方法:线性规划模型、营养素评价模型、比较分析 可视化数据图:营养素含量表、营养素摄入量对比图、营养素缺乏情况图 问题2:基于附件3的日平衡膳食食谱的优化设计 数…

KingbaseES数据库物理备份还原sys_rman

数据库版本:KingbaseES V008R006C008B0014 简介 sys_rman 是 KingbaseES 数据库中重要的物理备份还原工具,支持不同类型的全量备份、差异备份、增量备份,保证数据库在遇到故障时及时使用 sys_rman 来恢复到数据库先前状态。 文章目录如下 1.…

揭秘爬虫技术:从请求到存储的全方位解析

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、爬虫初探:请求与响应 二、数据解析:从混乱中提炼价值 三、数据…

Megatron-LM源码系列(八): Context Parallel并行

1. Context Parallel并行原理介绍 megatron中的context并行(简称CP)与sequence并行(简称SP)不同点在于,SP只针对Layernorm和Dropout输出的activation在sequence维度上进行切分,CP则是对所有的input输入和所有的输出activation在sequence维度上进行切分&…

M00238-固定翼无人机集群飞行仿真平台MATLAB完整代码含效果

一个小型无人机集群仿真演示平台,使用matlab和simulink搭建。 给出的例子是5架的,当然如果你愿意花时间,也可以把它扩展到10架,20架甚至更多。 输入:5架飞机的规划路径 输出:每架无人机每个时刻的13个状态量…