数据结构(四)双向链表

文章目录

  • 一、概念
  • 二、无头双向链表示意图
  • 三、操作
    • (一)定义结构体
    • (二)创建链表
      • 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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

了不起的学习生产板OrangePiAiPro

一. OrangePi AiPro介绍和初始化配置 介绍 香橙派 orangePiAIpro这个板子其实早在一年前就已经有了大面积推广且应用于各种真实的智能场景中了,比如图像识别,大文本语义解析,语音识别等,今日我也终于下手啦。 因为本人本科是一个嵌…

【Ambari】Docker 安装Ambari 大数据单机版本

目录 一、前期准备 1.1 部署 docker 1.2 部署 docker-compose 1.3 版本说明 二 、镜像构建启动 2.1 系统镜像构建 2.2 安装包源镜像构建 2.3 kdc镜像构建 2.4 集群安装 2.5 容器导出为镜像 三、Ubuntu环境安装测试 3.1 环境准备 3.2 集群容器启动 一、前期准备 1.…

Android Activity 设计详解

文章目录 Android Activity 设计说明1. Activity 的生命周期2. Activity 的启动模式3. Activity 的通信4. Activity 的布局和视图管理5. Activity 的配置变化处理6. Activity 的保存和恢复状态7. Activity 的任务和返回栈 总结 Android Activity 设计说明 在 Android 中&#…

了解Java垃圾收集

Java 的垃圾收集机制在 Java 应用程序开发中至关重要。此机制对于通过消除不再使用的对象来释放内存空间得过程来说至关重要。在这篇文章中,我带大家深入了解下 Java 垃圾收集的机制,并探索其工作原理、优点以及实现最佳性能的最佳实践。 1.什么是 Java…

数据挖掘之归一化

归一化(Normalization)的概念 在数据分析和机器学习中,归一化(Normalization)是一个常见的数据预处理技术。归一化的目的是将数据特征缩放到一个共同的尺度上,以便于后续的分析和建模。 归一化也称为最小-最大规范化 公式: x ′ x − m i n ( x ) m a x ( x ) − m i n ( x…

httpsok-v1.12.0支持LB证书自动部署

🔥httpsok-v1.12.0支持LB证书自动部署 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具,基于全新的设计理念,专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业,稳定、安全、可靠。 一行命令,一分钟轻松搞…

【Python】 探索Python中的“命名元组”

基本原理 在Python中,元组(tuple)是一种不可变序列,它允许我们存储一系列的元素,并且这些元素一旦被创建就不能被修改。元组的这种不可变性使得它们在多线程编程中非常安全,因为不需要担心数据被意外修改。…

2024电激世界脉动-中国汽车品牌全球化制胜手册

来源:奥美Ogilvy: 近期历史回顾: 2024中国宏观经济专题报告-数据要素市场建设 2023-2024年度报告.pdf 2024制药与生化医疗技术产业链白皮书.pdf 从可再生能源到绿氢-中国投资助力埃及能源转型.pdf 2024有机旅行中国行业指引.pdf 2024中国技术…

SpringBoot——发送HTML格式的邮件

目录 项目总结 新建一个SpringBoot项目 pom.xml application.properties配置文件 EmailService服务类 SpringbootMailHtmlApplicationTests测试类 项目总结 在SpringBoot项目中发送HTML格式的邮件的思路: 添加依赖:在项目中添加spring-boot-starte…

ROCm上运行网络中的网络(NiN)

7.3. 网络中的网络(NiN) — 动手学深度学习 2.0.0 documentation (d2l.ai) 代码 import torch from torch import nn from d2l import torch as d2ldef nin_block(in_channels, out_channels, kernel_size, strides, padding):return nn.Sequential(nn.…

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

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

PHP深入理解-PHP架构布局

PHP的架构布局涉及多个层次,让我们一起探讨一下吧!🚀 执行流程:解析为Token:将PHP代码解析成标记(tokens)。抽象语法树:将语法解析树转换为抽象语法树。Opcodes:将抽象语…

如何保养和维护气膜体育馆—轻空间

随着经济的飞速发展,气膜体育馆以其新颖的外观、优美的造型、节能环保的特点,迅速进入体育市场。然而,对于气膜体育馆的维护和保养是不容忽视的问题,必须引起重视。下面我们将详细介绍气膜体育馆的维护需要从哪些方面着手。 一、保…

后量子密码算法的数学原理

后量子密码算法,作为应对未来量子计算时代挑战的重要技术手段,其研究和应用正在逐步成为信息安全领域的热点。以下是对后量子密码算法的详细阐述: 一、背景与意义 随着量子计算技术的快速发展,传统的公钥密码算法,如RS…

欧科云链:Web3.0时代 具备链上数据分析能力的公司愈发凸显其价值

在当今激烈的市场竞争中,新兴互联网领域迅速崛起,Web2.0已相对成熟,用户创造数据,但不拥有数据。被视为新的价值互联网的Web3.0,赋予用户真正的数据自主权,它的到来被认为是打破Web2.0垄断的机遇。 在Web3…

深入pandas:数据分析

目录 前言 第一点:导入模块 第二点:准备数据 第三点:简单的分析数据 第四点:【重点】数据透支 总结 前言 在数据分析与挖掘的领域,了解如何使用工具和方法来探索数据是至关重要的。本文将探讨如何利用Python中的…

探索RS与AES加密技术:从经典到现代

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、MD5加密技术:经典中的经典 二、非对称加密:RSA技术的魅力 RSA技…

Samtec mPower®电源连接器:高能、可靠、灵活、小巧

【摘要/前言】 电源连接器是互连解决方案中不可或缺的一个组成部分。虽然相较于比较爱“竞速”的信号连接器,电源连接器的技术迭代不是那么频繁,但是它是连接电源和用电设备的重要纽带,想要确保设备正常运行,就少不了它的身影。 …

记录一次安装k8s初始化失败

实例化 kubeadm init --configkubeadm.yaml --ignore-preflight-errorsSystemVerification报错 [init] Using Kubernetes version: v1.25.0 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR CRI]: co…

移动摄像头专网需要解vlan,如何解决

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…