【数据结构】链式队列

链式队列实现:

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
                                                             

四、运行结果

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

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

相关文章

备考2025年AMC8数学竞赛:2000-2024年AMC8真题练一练

我们今天来随机看五道AMC8的真题和解析&#xff0c;对于想了解或者加AMC8美国数学竞赛的孩子来说&#xff0c;吃透AMC8历年真题是备考最科学、最有效的方法之一。 为帮助孩子们更高效地备考&#xff0c;我整理了2000-2004年的全部AMC8真题&#xff0c;并且独家制作了多种在线练…

Rust通用代码生成器莲花发布红莲尝鲜版二十一发布介绍视频,前端代码生成物大翻新

Rust通用代码生成器莲花发布红莲尝鲜版二十一发布介绍视频&#xff0c;前端代码生成物大翻新 Rust通用代码生成器发布了红莲尝鲜版二十一的最新介绍视频&#xff0c;前端代码生成物大翻新。视频请见&#xff1a; Rust通用代码生成器&#xff1a;莲花&#xff0c;红莲尝鲜版二…

构建生物医学知识图谱from zero to hero (3):生物医学命名实体识别和链接

生物医学实体链接 🤓现在是激动人心的部分。对于NLP和命名实体识别和链接的新手,让我们从一些基础知识开始。命名实体识别技术用于检测文本中的相关实体或概念。例如,在生物医学领域,我们希望在文本中识别各种基因、药物、疾病和其他概念。 生物医学概念提取 在这个例子中…

爬虫知识--03

数据存mysql import requests from bs4 import BeautifulSoup import pymysql# 链接数据库pymysql conn pymysql.connect(userroot,password"JIAJIA",host127.0.0.1,databasecnblogs,port3306, ) cursor conn.cursor() cursor conn.cursor()# 爬数据 res request…

Linux之ACL访问控制列表

一、ACL权限的介绍 1.1 什么是ACL 访问控制列表&#xff08;ACL&#xff09;是一种网络安全技术&#xff0c;它通过在网络设备&#xff08;如路由器、交换机和防火墙&#xff09;上定义一系列规则&#xff0c;对进出接口的数据包进行控制。这些规则可以包含“允许”&…

计算机网络面经_体系结构一文说清

编辑&#xff1a;平平无奇的羊 目录 基础 1. 计算机网络结构体系 三种模型之间的区别&#xff1a; 如何背诵&#xff1a; 进阶 OSI七层模型&#xff1a; TCP/IP四层模型&#xff1a; TCP/IP五层模型 总结 字节实习生为大家带来的是计算机网络面经系列博文&#xff0c;由浅…

线性代数:向量、张量、矩阵和标量

线性代数&#xff1a;向量、张量、矩阵和标量 背景 在线性代数中&#xff0c;向量、张量、矩阵和标量都属于基础概念&#xff0c;特别是最近AI的爆火&#xff0c;向量和张量的概念也越来越普及&#xff0c;本文将介绍下这些基本概念。 1. 标量&#xff08;Scalar&#xff0…

【Java网络编程06】HTTPS原理

1. HTTPS基本概念 HTTPS&#xff1a;HTTPS也是一个应用层协议&#xff0c;它在HTTP协议的基础上引入了一个加密层——SSL协议&#xff0c;区别就在于HTTP协议是基于明文传输的&#xff08;不安全&#xff09;&#xff0c;使用HTTPS加密就能在一定程度上防止数据在传输过程中被…

c# 类的介绍及延伸

类介绍 类的定义是以关键字 class 开始&#xff0c;后跟类的名称。 类属于引用类型&#xff0c;只能通过new方式创建。 如果类定义中没有指定基类&#xff0c;那其基类为system.object // <访问修饰符> class class类名 <access specifier> class class_name { //…

华为配置WDS手拉手业务示例

配置WDS手拉手业务示例 组网图形 图1 配置WDS手拉手业务示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 企业用户通过WLAN接入网络&#xff0c;以满足移动办公的最基本需求。但企业考虑到AP通过有线部署的成本较高&#xff0c;所以通过建立…

golang 监听ip数据包(golang纯享版)

golang 监听ip数据包(golang纯享版) 【注】本机编译运行平台为linux&#xff0c;如需测试代码请移至linux平台进行代码测试 本文以ip4 作为案例进行包抓取示范&#xff0c;ip6抓取与ip4方式异曲同工&#xff0c;可自行举一反三得出 第一步&#xff0c;通过wireshark抓包拿到…

第四十二回 假李逵翦径劫单身 黑旋风沂岭杀四虎-python读写csv和json数据

李逵答应了宋江三件事&#xff1a;不可吃酒&#xff0c;独自前行&#xff0c;不带板斧。李逵痛快答应了&#xff0c;挎一口腰刀&#xff0c;提着朴刀&#xff0c;带了一锭大银子&#xff0c;三五个小银子就下山去了。 宋江放心不下&#xff0c;于是请同乡朱贵也回家一趟&#…

spring boot3登录开发-3(账密登录逻辑实现)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 前置条件 内容简介 用户登录逻辑实现 创建交互对象 1.创建用户登录DTO 2.创建用户登录VO 创建自定义登录业务异…

Vue模板引用之ref特殊属性

1. 使用实例 <template><input ref"input" name"我是input的name" /><br /><ul><li v-for"arr in array" :key"arr" id"111" ref"itemRefs">{{arr}}</li></ul> </…

windows11本地深度学习环境搭建Anacond,keras,tensorflow,pytorch, jupyter notebook

前言 工欲善其事&#xff0c;必先利其器。 第一步 安装Anaconda 下载地址&#xff1a; https://www.anaconda.com/download 路径默认 这里都勾选上 然后会卡在这里&#xff0c;卡很久&#xff0c;不用管&#xff0c;等着就行 第二步 配置环境 conda env list 列出所有…

css复习

盒模型相关&#xff1a; border&#xff1a;1px solid red (没有顺序) 单元格的border会发生重叠&#xff0c;如果不想要重叠设置 border-collapse:collapse (表示相邻边框合并在一起) padding padding影响盒子大小的好处使用 margin应用&#xff1a; 行内或行内块元素水…

XFF伪造 [MRCTF2020]PYWebsite1

打开题目 直接查看源码 看到一个./flag.php 访问一下 购买者的ip已经被记录&#xff0c;本地可以看到flag&#xff0c;那么使用xff或者client-ip伪造一下ip试试 bp抓包 加一个X-Forwarded-For头 得到flag

GPT-SoVITS 快速声音克隆使用案例:webui、api接口

参考: https://github.com/RVC-Boss/GPT-SoVITS 环境: Python 3.10 PyTorch 2.1.2, CUDA 12.0 安装包: 1、使用: 1)下载项目 git clone https://github.com/RVC-Boss/GPT-SoVITS.git2)下载预训练模型 https://huggingface.co/lj1995/GPT-SoVITS 下载模型文件放到GPT…

高刷电竞显示器 - HKC VG253KM

今天给大家分享一款高刷电竞显示器 - HKC VG253KM。 高刷电竞显示器 - HKC VG253KM源于雄鹰展翅翱翔的设计灵感&#xff0c;严格遵循黄金分割比例的蓝色点晴线条&#xff0c;加上雾面工艺及高低起伏错落有致的线条处理&#xff0c;在VG253KM的背部勾勒出宛若大鹏展翅的鹰翼图腾…

关于Kinect 互动沙盘 深度图 Shader Graph 分层

把Kinect的深度图穿给Shader Graph using com.rfilkov.kinect; using UnityEngine; using UnityEngine.UI; public class GetDepthTex : MonoBehaviour { public Material Mat_SandTable; void Update() { Mat_SandTable.SetTexture("_MainTex"…