队列的运行算法

news2025/1/11 16:50:04

1.链队:

插入 删除 打印 取队顶
#include <stdio.h>
#include <stdlib.h>

typedef struct Qnode{
    int data;
    struct Qnode *next;
}Qnode,*QuenePtr;

typedef struct {
    QuenePtr front;
    QuenePtr rear;
}LinkQueue;
//初始化
void InitQueue(LinkQueue *q){
    (*q).front=(QuenePtr)malloc(sizeof (Qnode));
    if(!(*q).front) exit(0);
    (*q).front->next=NULL;
    (*q).rear=(*q).front;
}
//销毁
void DestroyQueue(LinkQueue *q){
    while((*q).front){
        (*q).rear=(*q).front->next;
        free((*q).front);
        (*q).front=(*q).rear;
    }
}
//判空
int IsEmpty(LinkQueue q){
    if(q.rear==q.front) return 1;
    else return 0;
}
//入队
void EnQueue(LinkQueue *q,int e){
    QuenePtr p=(QuenePtr)malloc(sizeof(Qnode));
    if(!p)exit(0);
    p->data=e;
    p->next=NULL;
    (*q).rear->next=p;
    (*q).rear=p;
    
}
//出队
void DeQueue(LinkQueue *q,int *e){
    if((*q).rear==((*q).front)) printf("Empty !");
    QuenePtr p=(*q).front->next;
    *e=p->data;
    (*q).front->next=p->next;
    if((*q).rear ==p) (*q).rear=(*q).front;
    free(p);
}
//打印
void Show(LinkQueue *q){
    for(Qnode *p=q->front->next ;p!=NULL;p=p->next){
        printf("%d ",p->data);
    }
    printf("\n");
}

int main(){
    LinkQueue q;
    InitQueue(&q);
    
    for(int i=0;i<5;i++){
        int e; scanf("%d",&e);
        EnQueue(&q,e);
    }
    Show(&q);
    
    if(IsEmpty(q)) printf("empty!");
    else printf("not empty");
    
    int e;DeQueue(&q,&e); printf("出队元素是:%d \n",e);
    Show(&q);
     
    int val;scanf("%d",&val);
    
    
    DestroyQueue(&q);
    return 0;
}

2.循环队列

wenti

#include<stdio.h>
#include<stdlib.h>
#define Maxsize 100

typedef struct {
    int *base;
    int front ;
    int rear;
}SqQueue;

//初始化
void InitQueue (SqQueue *q){
    q->base=(int *)malloc (Maxsize *sizeof (int));
    if(!q->base) exit(0);
    q->front=0;
    q->rear=0;
}
//入队
void EnterQueue(SqQueue *q,int e){
    if((q->rear+1)%Maxsize==q->front) printf("Full!\n");
    q->base[q->rear]=e;
    q->rear=(q->rear +1)%Maxsize;
}
//取队头元素
void getElem(SqQueue q,int *e){
    if(q.front!=q.rear){
        *e=q.base[q.front];
    }
    else {
        printf("Empty! \n");
    }
}
//求队长
int Getlength(SqQueue q){
    int e;
    e=(q.rear-q.front+Maxsize)%Maxsize;
    return e;
}
//出队
void PopQueue(SqQueue *q,int *e){
    if(q->front==q->rear) printf("Empty! \n");
    *e=q->base[q->front];
    q->front=(q->front+1)%Maxsize;
}
//打印
void Print(SqQueue q){
    for (int i=q.front;i!=q.rear;){
        printf("%d ",q.base[i]);
        i=(i+1)%Maxsize;
    }
    printf("\n");
}

int main(){
    SqQueue q;
    int e;
    for(int i=0;i<5;i++){
        scanf("%d",&e);
        EnterQueue(&q,e);
    }
    Print(q);
    getElem(q,&e);
    printf("队顶元素是 %d \n",e);
    
    int length=Getlength(q);
    printf("队长是%d \n",length);
     
    PopQueue(&q,&e);
    printf("出队元素是%d \n",e);
    Print(q);
    return 0;
}

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

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

相关文章

从头开始编写BP,不使用MATLAB工具箱,纯手写matlab代码,以BP分类为例,MATLAB代码免费获取...

本期文章教大家纯代码搭建BP神经网络&#xff0c;适合大家深入理解BP神经网络&#xff0c;非常适合新手学习&#xff01; 现在直接用手写BP代码的很少&#xff0c;一般都是用的MATLAB自带BP函数。然而如果你会自行编写BP神经网络&#xff0c;将会深入理解BP神经网络的结构与原理…

计讯物联水利RTU强力推进小型水库雨水情测报和安全监测系统应用

政策背景 小型水库是城市供水、农业灌溉和防洪排涝的重要基础设施&#xff0c;关系到人民群众的生产生活和社会经济的稳定发展。当前&#xff0c;小型水库监测设施薄弱是水库安全管理的突出短板&#xff0c;因此&#xff0c;水利部自2021年以来推进实施小型水库雨水情测报设施、…

语法分析出错,不是 GROUP BY 表达式

报错 ### Cause: dm.jdbc.driver.DMException: 第 9 行, 第 69 列[30]附近出现错误: 语法分析出错 ; bad SQL grammar []; nested exception is dm.jdbc.driver.DMException: 第 9 行, 第 69 列[30]附近出现错误: 语法分析出错at org.springframework.jdbc.support.SQLState…

java入门程序-HelloWorld

1.java程序开发的三个步骤 1.开发java程序&#xff0c;需要三个步骤&#xff1a;编写代码&#xff0c;编译代码(javac)&#xff0c;运行代码(java) 注意事项&#xff1a; 1.第一个java程序建议使用记事本书写。 2.建议代码文件名全英文&#xff0c;首字母大写&#xff0c;满…

院内导航系统厂商分析

随着医疗技术的不断发展和医院规模的不断扩大&#xff0c;院内导航系统成为了现代化医院不可或缺的一部分。患者就医时&#xff0c;一个高效便捷的导航系统可以帮助他们快速找到目标科室&#xff0c;同时也能提高医院的整体运营效率。本文将推荐五家在院内导航市场具有竞争力的…

【算法|前缀和系列No.4】leetcode238. 除自身以外数组的乘积

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【leetcode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

EL表达式与JSTL

1.EL表达式 1.EL表达式概述 EL(Expression Language)&#xff1a;表达式语言 在 JSP 2.0 规范中加入的内容&#xff0c;也是 Servlet 规范的一部分 作用&#xff1a;在 JSP 页面中获取数据。让我们的 JSP 脱离 java 代码块和 JSP 表达式 语法&#xff1a;${ 表达式内容 } …

群晖NAS drive的远程访问和电脑硬盘的内网穿透挂载设置方法

文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 前言 群晖作为专业的数据存储中心&…

【弃坑xdm】docker容器作为开发环境,更加灵活可靠

关于我准备转行深度学习~~ 弃坑xdm 弃坑xdm 弃坑xdm 转发给你的同学&#xff0c;吓他们一跳~~ ps:其实我准备使用docker容器作为开发环境&#xff0c;vscode可以直接连接docker容器&#xff0c;更加灵活可靠。

企业常用的项目管理工具推荐,了解有哪些选择

项目管理软件是一种帮助项目经理和团队有效地计划、组织和管理项目的工具。它为协作、通信和任务管理提供了一个集中的平台。市场上有各种各样的项目管理软件&#xff0c;每个都有其独特的特性和功能。企业常用的项目管理工具有哪些&#xff1f; 1.Zoho Projects Zoho Projec…

基于tornado BELLE 搭建本地的web 服务

我的github 将BELLE 封装成web 后端服务&#xff0c;采用tornado 框架 import timeimport torch import torch.nn as nnfrom gptq import * from modelutils import * from quant import *from transformers import AutoTokenizer import sys import json #import lightgbm a…

2023年中国城市矿产行业产值及发展趋势分析[图]

城市矿产是指工业化和城镇化过程中产生和蕴藏于废旧机电设备、电线电缆、通讯工具、汽车、家电、电子产品、金属和塑料包装物以及废料中&#xff0c;可循环利用的钢铁、有色金属、贵金属、塑料、橡胶等资源。 开展“城市矿产”示范基地建设是缓解资源瓶颈约束&#xff0c;减轻环…

BAT027:删除当前目录指定文件夹以外的文件夹

引言&#xff1a;编写批处理程序&#xff0c;实现删除当前目录指定文件夹以外的文件夹。 一、新建Windows批处理文件 参考博客&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件&#xff0c;点击【编辑】…

A062-防火墙安全配置-配置Iptables防火墙策略

实验步骤: 【教学资源类别】 序号 类别 打勾√ 1 学习资源 √ 2 单兵模式赛题资源 3 分组对抗赛题资源 【教学资源名称】 防火墙安全配置-配置安全设置iptables防火墙策略 【教学资源分类】 一级大类 二级大类 打勾√ 1.安全标准 法律法规 行业标准 安全…

【css】背景换颜色

更换前 longin.html <!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>login</title><link href"/css/style.css" type"text/css" rel"stylesheet"><s…

AN动画基础——变换的文字动画

【AN动画基础——变换的文字动画】 文字变换动画 本篇内容&#xff1a;散件动画&#xff0c;形状提示 重点内容&#xff1a;形状提示 工 具&#xff1a;Adobe Animate 2022 文字变换动画 &#xff08;底下背景和前面文字一样动&#xff0c;转完GIF不知道为啥不动了&#xff0c…

node教程

文章目录 1.node入门 1.node入门 node是什么&#xff1f; node.js是一个开源的&#xff0c;跨平台的JS运行环境&#xff08;其实可以理解为是一款应用程序&#xff0c;是一款软件&#xff0c;可以运行JS&#xff09; node作用&#xff1a; 1.开发服务器应用

Wireshark新手小白基础使用方法

一、针对IP抓取 1、过滤格式&#xff1a; &#xff08;1&#xff09;、ip.src eq x.x.x.x &#xff08;2&#xff09;、ip.dst eq x.x.x.x &#xff08;3&#xff09;ip.src eq x.x.x.x or ip.dst eq x.x.x.x 二、针对端口过滤 1、过滤格式&#xff1a; &#xff08;1&a…

Linux下创建用户并禁止root登录

在Linux中&#xff0c;root几乎拥有所有的权限&#xff0c;一旦root用户密码外泄&#xff0c;对于服务器而言将是致命的威胁&#xff0c;禁止root用户通过ssh的方式远程登录&#xff0c;这样即使root用户密码外泄也能够保障服务器的安全。 1、创建用户&#xff1a; adduser ad…

网络安全分析——蠕虫病毒动态分析视图

蠕虫病毒&#xff08;Worm Virus&#xff09;是一种自我复制的恶意软件&#xff0c;通过网络或系统漏洞传播&#xff0c;感染其他计算机并利用其资源。与其他病毒不同&#xff0c;蠕虫病毒无需依赖于宿主文件&#xff0c;并可以自动在网络中传播&#xff0c;因此具有高度传染性…