【数据结构】链式队列

news2024/9/21 0:42:24

链式队列实现:

1.创建一个空队列

2.尾插法入队

3.头删法出队

4.遍历队列

一、main函数

 #include <stdio.h>                                                
 #include "./3.linkqueue.h"                                        
 int main(int argc, const char *argv[])                            
 {                                                                 
     linkpos* pos = create_linkqueue();                            
                                                                   
     show_linkqueue(pos);
                                                                   
     insertENd_linkqueue(pos,111);                                 
     insertENd_linkqueue(pos,222);                                 
     insertENd_linkqueue(pos,333);                                 
     insertENd_linkqueue(pos,444);                                 
     insertENd_linkqueue(pos,555);                                 
                                                                   
     show_linkqueue(pos);                                          
                                                                   
     dataType num = output_linkqueue(pos);                         
     printf("出队的数据为:%d\n",num);                             
     show_linkqueue(pos);                                          
     return 0;                                                     
 }                                                                 
                                                                   
                                                                   
                                                                   
                                                                   
                                                                   
                                                                   
                                                                   
                                                                   

二、功能函数

#include <stdio.h>                                                    
#include <stdlib.h>                                                   
#include "./3.linkqueue.h"                                            
                                                                      
//创建                                                                
linkpos* create_linkqueue()                                           
{                                                                     
    linkpos* pos = (linkpos*)malloc(sizeof(linkpos));                 
    pos->front = (linkqueue*)malloc(sizeof(linkqueue));               
    if(NULL == pos->front)                                            
    {                                                                 
        printf("队列创建失败\n");                                     
        return NULL;                                                  
    }                                                                 
    pos->front->next =NULL;                                           
    pos->rear = pos->front;                                           
    pos->front->text.len = 0;                                         
    return pos;                                                       
}                                                                     
                                                                      
//判空                                                                
int isEmpty_linkqueue(linkpos*pos)                                    
{                                                                     
    return pos->front == pos->rear?1:0;                               
}                                                                     
                                                                      
                                                                      
//遍历                                                                
void show_linkqueue(linkpos*pos)                                      
{                                                                     
    if(isEmpty_linkqueue(pos))                                        
    {                                                                 
        printf("队列为空!\n");                                       
        return ;                                                      
    }                                                                 
    linkqueue* p = pos->front->next;                                  
    while(p != pos->rear)                                             
    {                                                                 
        printf("%d ",p->text.data);                                   
        p=p->next;                                                    
    }                                                                 
    printf("\n");                                                     
    return ;                                                          
}                                                                     
                                                                      
                                                                      
                                                                      
//尾插 入队                                                           
void insertENd_linkqueue(linkpos*pos,dataType num)                    
{                                                                     
    linkqueue* temp = (linkqueue*)malloc(sizeof(linkqueue));          
    if(NULL == temp)                                                  
    {                                                                 
        printf("结点创建失败,入队失败\n");                           
        return;                                                       
    }                                                                 
    temp->next = NULL;                                                
    temp->text.data = num;                                            
                                                                      
    temp->next = pos->rear->next;                                     
    pos->rear->next = temp;                                           
                                                                      
    pos->rear = pos->rear->next;                                      
                                                                      
    pos->front->text.len++;                                           
    return;                                                           
                                                                      
}                                                                     
                                                                      
//头删 出队                                        
dataType output_linkqueue(linkpos*pos)             
{                                                  
    if(isEmpty_linkqueue(pos))                     
    {                                              
        printf("队列为空,无法出队\n");            
        return (dataType)-1;                       
    }                                              
    linkqueue* temp;                               
    temp = pos->front->next;                       
    pos->front->next = temp->next;                 
    dataType num =temp->text.data; 
    if(pos->front->next == NULL) 
    {
        pos->rear = pos->front;
    }               
    free(temp);                                    
    return num;                                    
}                                                  
                                                   

三、头文件

 #ifndef __LINKQUEUE_H__
 #define __LINKQUEUE_H__
 
 typedef int dataType;
 
 union msg{
     dataType data;
     int len;
 };
 
 typedef struct node{
     union msg text;
     struct node* next;
 }linkqueue;
 
 typedef struct
 {
     linkqueue* front;
     linkqueue* rear;
 }linkpos;
 
 
 linkpos* create_linkqueue();
 void insertENd_linkqueue(linkpos*pos,dataType num);
 dataType output_linkqueue(linkpos*pos);
 void show_linkqueue(linkpos*pos);                           
 
 #endif
                                                             

四、运行结果

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

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

相关文章

漫漫数学之旅030

文章目录 经典格言数学习题古今评注名人小传 - 柏拉图 经典格言 不知道正方形对角线与它的边不可通约的人&#xff0c;根本不配人这个称号。——柏拉图&#xff08;Plato&#xff09; 好家伙&#xff0c;想象一下柏拉图老兄正站在古希腊的广场上&#xff0c;手里挥舞着一根画着…

流程图:理解、创建与优化的视觉工具

流程图&#xff1a;理解、创建与优化的视觉工具 引言 在日常生活和工作中&#xff0c;我们经常遇到需要描述一系列步骤或过程的情况。这些步骤可能是制作一杯咖啡、完成一个项目&#xff0c;或者是解决一个复杂的数学问题。流程图&#xff0c;作为一种强大的视觉工具&#xf…

自然语言处理(NLP)—— 神经网络自然语言处理(2)实际应用

本篇文章的第一部分是关于探索词嵌入&#xff08;word embedding&#xff09;向量空间。词嵌入是一种语言模型和文本表示技术&#xff0c;其中单词或短语从词汇表被映射到向量的高维空间中。通过这种方式&#xff0c;可以通过计算向量之间的距离来捕捉单词之间的语义关系。 1.…

PC8260小封装COT控制模式同步降压器18V/6A输出电流只需极少外围元器

描述 PC8260是一个高效率的600kHz&#xff0c;恒定导通时间&#xff08;COT&#xff09;控制模式同步降压DC-DC转换器提供高达6A的电流。PC8260集成主开关和极低同步开关RDS&#xff08;ON&#xff09;以将传导损耗降至最低。低输出电压纹波和小型外部电感器电容器尺寸通过600…

【EndNote20】Endnote20和word的一些操作

文章目录 前言一、如何导入参考文献到EndNote201.1.在谷歌学术或知网上下载文献1.2.将下载好的文件导入EndNote20(可批量导入)1.3.书籍如何导入 二、Word中加入参考文献 前言 做毕设时学习了EndNote20的一些使用方法&#xff0c;并在此慢慢做汇总。 一、如何导入参考文献到End…

快速构建 Debezium MySQL Example 数据库

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

力扣226 翻转二叉树 Java版本

文章目录 题目描述解题思路代码 题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 示例 2&#xff1a; 输入&#xff1a;root…

JavaSE多线程线程池

文章目录 1. 多线程入门1.1 多线程相关概念1.2 什么是多线程1.3 多线程的创建方式1.3.1 继承 Thread 的方式1.3.2 实现 Runnable 接口的方式1.3.3 实现 Callable 接口的方式1.3.4 Thread 类中常用方法1.3.5 sleep() 方法 和 wait() 方法区别&#xff1a; 2. 线程安全2.1 线程安…

苍穹外卖Day02——总结2

前期文章 文章标题地址苍穹外卖Day01——总结1https://blog.csdn.net/qq_43751200/article/details/135466359?spm1001.2014.3001.5501苍穹外卖Day01——解决总结1中存在的问题https://lushimeng.blog.csdn.net/article/details/135473412 总结2 前期文章1. 新增员工模块1.1 …

Tomcat 学习之 Filter 过滤器

目录 1 Filter 介绍 2 Filter 的生命周期 3 Filter 和 FilterChain 4 Filter 拦截过程 5 FilterConfig 6 Filter 使用 1 Filter 介绍 在 Tomcat 中&#xff0c;Filter 是一种用于拦截请求和过滤响应的组件&#xff0c;可以在请求到达 Servlet 之前或响应离开 Servlet 之后…

宝塔面板mysql使用root账户远程登录

今日在弄数据库备份&#xff0c;我们两台服务器&#xff0c;一台测试环境一个正式环境&#xff1b;使用linux宝塔面板&#xff0c;数据库都是服务器本地mysql&#xff0c;打算在测试服务器添加远程数据库备份正式环境的数据库&#xff0c;需要注意的是添加远程服务器后必须点一…

QEMU源码全解析 —— virtio(22)

接前一篇文章&#xff1a;QEMU源码全解析 —— virtio&#xff08;21&#xff09; 前几回讲解了virtio驱动的加载。本回开始讲解virtio驱动的初始化。 在讲解virtio驱动的初始化之前&#xff0c;先要介绍virtio配置的函数集合变量virtio_pci_config_ops。实际上前文书也有提到…

开源博客项目Blog .NET Core源码学习(9:Autofac使用浅析)

开源博客项目Blog使用Autofac注册并管理组件和服务&#xff0c;Autofac是面向.net 的开源IOC容器&#xff0c;支持通过接口、实例、程序集等方式注册组件和服务&#xff0c;同时支持属性注入、方法注入等注入方式。本文学习并记录Blog项目中Autofac的使用方式。   整个Blog解…

hash,以及数据结构——map容器

1.hash是什么&#xff1f; 定义&#xff1a;hash,一般翻译做散列、杂凑&#xff0c;或音译为哈希&#xff0c;是把任意长度的输入&#xff08;又叫做预映射pre-image&#xff09;通过散列算法变换成固定长度的输出&#xff0c; 该输出就是散列值。这种转换是一种压缩映射&…

【selenium】三大切换 iframe 弹窗alert 句柄window 和 鼠标操作

目录 一、iframe 1、切换方式&#xff1a; 1、第一种情况&#xff1a; 2、第二种情况&#xff1a; 方式1: 先找到iframe&#xff0c;定位iframe元素&#xff08;可以通过元素定位的各种方式&#xff1a;xpath&#xff0c;css等等&#xff09;&#xff0c;用对象接收&…

vue后台管理添加水印简单方式watermark-package

详情参考:https://www.npmjs.com/package/watermark-package 示例方法 <el-button type"primary" click"AddWatermark">添加水印</el-button><el-button type"primary" click"RemoveWatermark">清除水印</el-but…

7 个值得收藏的 Python 身份验证库

在数字化转型时代&#xff0c;每一个数据字节都成为潜在的金矿&#xff0c;保护数据变得至关重要。将数字领域视为一座古老的宫殿&#xff0c;虽然里面装饰着宝藏&#xff08;读&#xff1a;数据&#xff09;&#xff0c;但大门&#xff08;读&#xff1a;身份验证&#xff09;…

Qt 事件

1. 事件 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。在Qt中使用一个对象来表示一个事件&#xff0c;它继承自QEvent类。 2. 事件和信号 事件与信号并不相同&#xff0c;比如我们使用鼠标点击了一下界面上的按钮&#xff0c;那么就会产生…

信钰证券:炒股死记8句口诀?新手须知!

炒股死记以下8句口诀&#xff1a; 1、早上大跌可加仓&#xff0c;早上大涨要减仓 当个股在开盘后呈现大跌的状况&#xff0c;很有可能是主力在使用低开进行洗盘操作&#xff0c;散户能够考虑在此刻加仓&#xff0c;等股价反弹时&#xff0c;好做T卖出&#xff0c;赚取一定的差…

【Appium UI自动化】pytest运行常见错误解决办法

通过Appium工具录制代码在pycharm上运行报错&#xff1a; 错误一&#xff1a; 1.提示 setup() 方法运行 error failed 解决办法&#xff1a;未创建 init __ 方法&#xff0c;创建一个空的__init.py文件就解决了。 原因&#xff1a; 错误二&#xff1a; 2.运行代码&#xff…