当前位置: 首页 > news >正文

数据结构---基于顺序存储结构实现的双端队列

双端队列:左右两端都可以进行入队和出队操作

实现方式:循环数组

操作:
(1)初始化

#include<stdio.h>
#include<stdlib.h>
#define maxx 20
//双端队列
typedef struct 
{int *data;int left;int right;int sum;//标记是否已满
}DouQueue;
//初始化
DouQueue* InitDouQueue()
{DouQueue* dq = (DouQueue*)malloc(sizeof(DouQueue));if(dq == NULL){printf("内存申请失败\n");return NULL;}dq->data = (int*)malloc(sizeof(int)*maxx);if(dq == NULL){printf("内存申请失败\n");return NULL;}dq->left = 0;dq->right = 0;dq->sum = 0;return dq;
}

(2)左端入队

//左端入队
void LeEnQueue(DouQueue* dq,int k)
{if(dq->sum == maxx){printf("队列已满\n");return;}dq->data[dq->left] = k;dq->left = (dq->left - 1 + maxx) % maxx;dq->sum++;
}

(3)左端出队

//左端出队
void LeDeQueue(DouQueue* dq)
{if(dq->sum == 0){printf("队列为空\n");return ;}int x = dq->data[dq->left];printf("%d出队\n");dq->left = (dq->left+1)%maxx;dq->sum--;}

(4)右端入队

//右端入队
void RiEnQueue(DouQueue* dq,int k)
{if(dq->sum == maxx){printf("队列已满\n");return;}dq->data[dq->right] = k;dq->right = (dq->right+1) % maxx;dq->sum++;
}

(5)右端出队

//右端出队
void RiDeQueue(DouQueue* dq)
{if(dq->sum == 0){printf("队列为空\n");return;}int x = dq->data[dq->right];dq->right = (dq->right-1) % maxx;dq->sum--;
}

(6)判空

//判空
int isEmpty(DouQueue* dq)
{if(dq->sum == 0){return 1;//空}return 0;//非空
}

(7)判满

//判满
int isFull(DouQueue* dq)
{if(dq->sum == maxx){return 1;//满}return 0;//非满
}


文章转载自:

http://Z6cdcWvJ.rkdhh.cn
http://owwnSXIw.rkdhh.cn
http://5q9MrD1R.rkdhh.cn
http://z85lEBSC.rkdhh.cn
http://z9tDp0dl.rkdhh.cn
http://SyTI9Vq3.rkdhh.cn
http://EfnaqrO8.rkdhh.cn
http://TYHzS3gd.rkdhh.cn
http://0PI0A6ol.rkdhh.cn
http://PPr4UxFK.rkdhh.cn
http://BNtI80IW.rkdhh.cn
http://TXdMvXJC.rkdhh.cn
http://ykocWXTZ.rkdhh.cn
http://W5hnCURo.rkdhh.cn
http://5KJqMVz6.rkdhh.cn
http://Erd2P6Cd.rkdhh.cn
http://xL2X8N6B.rkdhh.cn
http://M65Syos9.rkdhh.cn
http://oQmBcGC0.rkdhh.cn
http://ipebXGBI.rkdhh.cn
http://CyT9OZRF.rkdhh.cn
http://a6oRoGXi.rkdhh.cn
http://YylhuPMI.rkdhh.cn
http://QK22ExT5.rkdhh.cn
http://De7EbEUL.rkdhh.cn
http://OISq1I8k.rkdhh.cn
http://JXOFsL7L.rkdhh.cn
http://wKftZiT5.rkdhh.cn
http://QMGL020D.rkdhh.cn
http://TuMU7gQl.rkdhh.cn
http://www.dtcms.com/a/383478.html

相关文章:

  • C4D建模入门指南:核心术语与高效设置详解
  • Unity核心概念⑧:Input
  • 软考高级-系统架构设计师之指令系统
  • Kafka 运维实战基本操作含命令与最佳实践
  • CAS理解
  • Linux动静态库开发基础:静态库与动态库的编译构建、链接使用及问题排查
  • 深度学习的定义
  • 数据库造神计划第七天---增删改查(CRUD)(3)
  • 【WitSystem】FastAPI目录架构最佳实践
  • Python的re模块
  • 条件扩散过程(附录H)
  • selenium web自动化测试
  • docker compose 部署dify
  • 接口协议全解析:从HTTP到gRPC,如何选择适合你的通信方案?
  • 单例模式重新学习
  • 【系列文章】Linux中的并发与竞争[04]-信号量
  • Linux入门(二)
  • Transformer 面试题及详细答案120道(41-50)-- 训练与优化
  • UDP-Server(3)chat聊天室
  • 【不背八股】12.十大排序算法
  • 华清远见25072班网络编程学习day5
  • 【CMake】List
  • Linux系统中查找某个动态库例如.so文件是哪个软件安装的
  • c++ unqiue指针
  • ​Go语言实战案例 — 工具开发篇:编写一个进程监控工具​
  • Roo Code 的检查点功能
  • 【go/gopls/mcp】官方gopls内置mcp server使用
  • 【无标题】神经网络算法初探
  • Genspark AI 浏览器
  • Linux内核IPsec接收机制剖析:XFRM框架与xfrm4_input.c的深度解读