链队为什么要有两个结构体和链队的几个基本功能

2023-05-16

链队

链队为什么有俩个结构体?

其实链队不是必须有两个结构体的

typedef struct qnode
{
    ElemType data;//存放数据
    struct qnode * next;//下一个结点的指针
}DataNode;//链队数据结点的类型
typedef struct
{
    DataNode *Front;//指向队首的结点
    DataNode *rear;//指向队尾的结点
}LinkQuNode;LinkQuNode *q;

有两个结构体只是调用函数时方便参数传递
若果不构造

typedef struct
{
    DataNode *Front;//指向队首的结点
    DataNode *rear;//指向队尾的结点
}LinkQuNode;LinkQuNode *q;

在调用函数时就要传两个参数,把Front和rear分别传进去;但如果有再构造一个结点的类型的结构体就比较方便了,无论有多少指向结点的指针,直接传递一个参数q,让q指向链队结点的类型的指针就可以了
你敲代码的时候也会发现它会提示你
在这里插入图片描述
在这里插入图片描述
也就是说q想指向链表的元素只能通过Front或rear去指向;不能越级,越级会报错;
总的来说就像一级一级的去管理链队,q管理Front,rear,而Front,rear管理data,next;

链队的几个基本功能的代码

#include <iostream>
#include <malloc.h>
using namespace std;
typedef char ElemType;
int n;
typedef struct qnode
{
    ElemType data;//存放数据
    struct qnode * next;//下一个结点的指针
}DataNode;//链队数据结点的类型
typedef struct
{
    DataNode *Front;//指向队首的结点
    DataNode *rear;//指向队尾的结点
}LinkQuNode;LinkQuNode *q;//链队结点的类型
void InitQueue(LinkQuNode*&q)//初始化链队
{
    cout<<"初始化链队;";
    q=(LinkQuNode*)malloc(sizeof(LinkQuNode));
    q->Front=q->rear=NULL;
}
void DestroyQueue(LinkQuNode*&q)//销毁链队
{
    cout<<"销毁链队!";
    DataNode*pre=q->Front,*p;
    if(pre!=NULL)
    {
        p=pre->next;
        while(p)
        {
            free(pre);
            pre=p;
            p=p->next;
        }
        free(p);
    }
    free(q);
}
void QueueEmpty(LinkQuNode*q)
{
    if(q->rear!=NULL)
        cout<<"链队非空"<<endl;
    else
        cout<<"链队为空"<<endl;
}
void enQueue(LinkQuNode *&q)//进队
{
    cout<<"进队元素依次为:";
    int i=0;
    ElemType e;
    DataNode *p;
    while(i<n)
    {
        cin>>e;
        p=(DataNode*)malloc(sizeof(DataNode));
        p->data=e;
        if(q->rear==NULL)
            q->Front=q->rear=p;
        else
        {
            q->rear->next=p;
            q->rear=p;
        }
        i++;
    }
    p->next=NULL;
}
void deQueue(LinkQuNode*&q)//出队
{
    cout<<"出队元素为:";
    DataNode *t;
    while(q->Front!=q->rear)
    {
        t=q->Front;
        cout<<t->data<<" ";
        q->Front=q->Front->next;
        free(t);
    }
    cout<<q->Front->data<<endl;
}
void input()//输入数据n
{
    cout<<"请输入链队元素的个数;";
    cin>>n;
}
int main()//主函数
{
    input();
    InitQueue(q);
    QueueEmpty(q);
    enQueue(q);
    QueueEmpty(q);
    deQueue(q);
    QueueEmpty(q);
    DestroyQueue(q);
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

链队为什么要有两个结构体和链队的几个基本功能 的相关文章

  • 耦合,紧耦合,松耦合,解耦

    一 耦合 耦合是两个或多个模块之间的相互关联 在软件工程中 xff0c 两个模块之间的耦合度越高 xff0c 维护成本越高 因此 xff0c 在系统架构的设计过程中 xff0c 应减少各个模块之间的耦合度 xff0c 以提高应用的可维护性
  • 实习日记之SNMPV3不难

    SNMPv3 的连接 snmpwalk v 3 u a a MD5 A Qaz1234567 x AES X Qaz1234567 l authPriv 10 0 31 132 1 3 6 1 2 1 6 前面 v 3 xff0c 意思是在
  • 一些控制算法学习

    pid LQR xff08 LQG xff09 xff0c 鲁棒控制 xff08 H无穷 xff09 xff0c 自适应控制 xff08 包含滑膜 xff0c 反步法 xff0c mrac模型参考 xff0c L1自适应 xff09 xff
  • Qt和其它GUI库的对比

    Windows 下的 GUI 库 Windows 下的 GUI 解决方案比较多 xff1a 基于 C 43 43 的有 Qt MFC WTL wxWidgets DirectUI Htmlayout xff1b 基于 C 的有 WinFor
  • stm32初学 Keil debug断点调试的步骤

    网上没搜到 xff0c 自己简单写一个 xff0c 希望对大家有用 1 在debug模式下 xff0c 将需要观察的变量选中 xff0c 右键Add to添加到 Watch 1中 原本Watch应该位置在右下角见图二 xff0c 是我拖到了
  • 关于a++和++a

    作者 xff1a Huya天涯过客 写此博文的初衷是想将自己的心得体会与Java初学者进行分享 xff0c 已在该领域纵横多年的技术大佬请自行跳过 刚学到数据类型以及变量赋值的同学们肯定会接触到自增运算符这个知识点 xff0c 绝对有很多人
  • Nuttx学习笔记(一)——Nuttx系统开发环境搭建

    最近刚开始接触Nuttx xff0c 在配置环境的时候踩了一些坑 xff0c 写下这篇博客记录一下 本人搭建开发环境的时候 xff0c 参考了官方文档和YouTube上的一个大佬的视频 xff0c 链接如下 xff1a 官方文档 http
  • Linux驱动_驱动设计的思想(面向对象、设备树)

    一 Linux驱动 驱动设计的思想 xff08 面向对象 分层 分离 xff09 总则 xff1a Linux驱动 61 驱动框架 43 硬件操作 61 驱动框架 43 单片机 1 面向对象就是用结构体表示某个对象 2 分层 3 分离 事实
  • 2惠普暗影精灵恢复出厂设置

    因为之前把电脑送去惠普售后店维修了 xff08 寻找惠普官方售后店的方法 xff1a 关注微信公众号惠普服务 xff09 xff0c 拿回来的时候系统被店里的人重装了 xff0c 不但C盘只剩下十几G的空间 xff0c 而且多了阴魂不散的3
  • Ubuntu18.04屏幕自动旋转解决方法

    Ubuntu屏幕突然自己旋转 xff0c 大概率是因为开了重力感应 xff0c 电脑倾角变动后 xff0c 屏幕跟随旋转 首先先把屏幕转回来 终端输入 xrandr span class token operator span q 查看连接
  • 傅里叶与图像特征简介

    傅里叶变换在图像处理中有着广泛的应用 xff0c 主要应用方向有 xff1a 图像增强与去噪 边缘检测 特征提取 图像压缩等 其核心思想是使用傅里叶变换将图像由空间域转换至频率域 xff0c 通过对频率域进行不同的运算操作 xff0c 实现
  • openCPU开发demo详解包括线程调度、队列等的使用

    OpenCPU开发例程的详细解释 xff0c 包括各种功能的测试 xff0c 如线程 队列等 源代码为osi demo c 初步学习 xff0c 可能有误 xff0c 仅供参考 demo详解 代码部分系统函数fibo textTrace 输
  • 如何在ros上编写一个简单的node并进行通信

    如何在ros上编写一个简单的node并进行通信 这里采用ros教程的例子 xff0c 稍作修改 与C 43 43 不同的是 xff0c python不需要在package中加入message runtime以及message generat
  • ros编写自己的msg(Python)

    这里 xff0c 假设我们的包名叫做test py 我们写自己的msg文件在该包的msg文件夹下 test msg float32 data 然后 xff0c 我们编写自己的talker py文件如下 usr bin env python
  • docker(2)——docker仓库之Registry、harbor仓库

    一 什么是仓库 Docker 仓库是用来包含镜像的位置 xff0c Docker提供一个注册服务器 xff08 Register xff09 来保存多个仓库 xff0c 每个仓库又可以包含多个具备不同tag的镜像 Docker运行中使用的默
  • 物联网平台设备数据同步到RDS & MySQL数据库(保姆级教学)

    物联网平台设备数据同步到RDS amp MySQL数据库 xff08 保姆级教学 xff09 目标实现 xff1a 阿里云物联网平台某设备实时数据 xff08 MQTT协议上云 xff09 同步存储到RDS MySQL数据库 实现步骤 xf
  • 重头开始

    总感觉 生活中缺点什么 今天开始更新我正在学的FPGA和ESP8266的一些教程和心得 xff1b
  • ESP8266与FPGA初识

    ESP8266 今天其实就了解了一下ESP8266的一些相关 我们主要使用由SDK来编写代码来控制ESP8266以往我们用8266通常都是用AT指令用单片机串口控制的 这样的优点是简单 但是效率不是很高 xff0c 我们知道ESP8266本
  • 大创训练:基于图像处理的智能安防系统(序)

    基本完成目标 xff1a 利用OPENCV进行图像人脸识别进行操作 后期 xff1a 实际应该用到各个平台 QQ xff1a 754331516 欢迎交流 两周一更

随机推荐

  • 研究中常用的数据归一化方法(附Matlab程序)

    在数据处理中 我们往往需要对计算得到的结果数据 xff08 如fMRI中计算得到功能连接等指标 xff09 进行归一化 xff08 Normalization xff09 处理 其实不止在脑科学领域 xff0c 在其他领域也常常需要对结果数
  • INA219与INA216测试总结

    最近需要用到测电压的芯片 xff0c 主要看了一下有TI芯片的INA219系列和INA226系列 xff0c 索性回来都测试了一下 xff0c INA216的话我测试的时候没有图片 INA219我用的是这一款 xff0c 这一款我测试的时候
  • 基于ACFLY无人机调试笔记(一)

    调试心得 最近调试有空了来调试无人机 xff0c 飞控是用的ACFLY EDU的开源飞控 xff0c 因为ACFLY的教程比较少 xff0c 比较偏向商业化 xff0c 所以我开始记录一下使用 记录些项目进行二次开发过程中的细节ACFLY的
  • 入门信号完整性(1)

    最近在学习信号完整性 记录一下学习的过程 好久没回来写了 总觉得脑子是不够用的 这一回打算在博客上写关于信号完整性的知识 xff0c 但是信号完整性的知识非常的抽象 xff0c 所以我们也不能只是学习理论啦 xff0c 还需要仿真软件 xf
  • 二极管仿真模式在同步BUCK里面的应用

    效化和小型化 xff0c 一直都是功率电源发展的两个方向 同步BUCK在这两个方面的卓越表现 xff0c 也是在越来越多的场合得到了运用 xff0c 像锂电池充电 二次砖块电源等等 如图1所示 xff0c 同步BUCK相较传统BUCK最主要
  • 树莓派初体验之安装及SSH远程连接

    树莓派初体验之安装及SSH远程连接 安装远程通信 等了好久终于把树莓派等来了 xff0c 想法是通过pix4飞控和树莓派通信 xff0c 进行飞控的开发 xff0c 毫无经验 xff0c 一点一点来吧 xff0c 也希望有人一起来愉快的学习
  • 树莓派4B与Pixhawk4飞控之状态读取

    树莓派4B与Pixhawk4飞控之状态监控读取 飞控配置树莓派配置程序代码总结 先看看装备 xff0c 上节就说了 xff0c 这树莓派的壳子我喜欢 历经九九八十一难 xff0c 终于把树莓派和Pixhawk4飞控接通了 xff0c 中间尝
  • Ros机器人之(五)订阅subscriber消息

    Ros机器人之 xff08 五 xff09 订阅subscriber消息 这个讲的是订阅节点消息 learning topic里src下创建一个cpp文件 touch pos subscriber 内容如下 xff1a span class
  • Ardupilot之Mavros实现Ros节点控制(一)

    Ardupilot之Mavros实现Ros节点控制 Mavros安装修改Mavros运行Mavros 这部分ros发布的命令话题参考的是PX4固件最基本的Offboard node节点 xff0c 命令发布后 xff0c 能够连接并解锁 x
  • Ardupilot之Mavros实现Ros节点控制(二)

    Ardupilot之Mavros实现Ros节点控制 xff08 二 xff09 offboard建立仿真运行 未完成mavros安装及相关设置的参考上一篇文章 Ardupilot之Mavros实现Ros节点控制 xff08 一 xff09
  • Dronekit代码学习(一)连接及基础状态设置

    Dronekit代码学习 xff08 一 xff09 连接及基础状态设置 目前Dronekit可自行设置的内容较少 xff0c 但能满足基本使用要求 后面还是需要对Mavlink相关指令进行学习 连接 地址根据实际情况修改 xff0c 官网
  • PX4之Gazebo多机仿真尝试

    PX4之Gazebo多机仿真尝试 运行多机前 xff0c 确保你的单机运行没有问题 Px4源码中已经包含了二机的仿真 xff0c 运行以下命令 xff1a roslaunch px4 multi uav mavros sitl span c
  • windows10+nvidia驱动+cuda10.1+cudnn安装教程

    一 显卡驱动 提前安装好nvidia驱动 xff0c windows一般都自动安装了nvidia驱动了 没有安装驱动可以去官网下载驱动 https www geforce cn drivers 选择自己对应的显卡驱动 xff0c 默认安装就
  • GAAS学习(一)Offboard基本控制

    GAAS学习 xff08 一 xff09 Offboard基本控制 开源项目GAAS xff1a https github com generalized intelligence GAAS 一 确保环境安装配置完成 ROS Firmwar
  • Dronekit代码学习(五)基于Gps下的自动跟随

    Dronekit代码学习 xff08 五 xff09 基于Gps下的自动跟随 参考Dronkit python xff1a https github com dronekit dronekit python 实时更新PC端GPS位置 xff
  • GAAS学习(三)简单全局目标追踪

    GAAS学习 xff08 三 xff09 简单全局目标追踪 基于KCF简单目标追踪 xff0c 方法如下 xff1a 编译KCF相关库 git clone https span class token punctuation span sp
  • MATLAB车牌识别(含GUI,语音播报)

    GUI框架源码 xff1a https download csdn net download weixin 44748303 12682333 一 设计原理及设计方案 1 系统简述 一个完整的车牌识别系统闭应包括车辆检测 图像采集 图像预处
  • 一个程序员的成长之路

    一个程序员的成长之路 接下来就是你要学的东西 xff0c 从简入难 xff0c 由浅入深 xff0c 以下的东西 xff0c 通通都要学会 静态网页 43 HTML 43 Css 43 JavaScript 43 JQuery 43 Boo
  • Jetson TX2 重装系统(刷机)+后续设置(安装Fcitx、解决拼音候选词不显示、换国内源、局域网实现VNC远程桌面)

    xff08 珍爱生命 xff0c 远离TX2 xff01 xff01 xff01 xff09 一 Jetson tx2刷机过程及注意事项 二 安装Fcitx 43 Googlepinyin 三 解决拼音模式下不显示候选词bug 四 Ubun
  • 链队为什么要有两个结构体和链队的几个基本功能

    链队 链队为什么有俩个结构体 xff1f 其实链队不是必须有两个结构体的 span class token keyword typedef span span class token keyword struct span qnode sp