队列

只允许在一端进行插入,在另一端进行删除的线性表

队头(Front):允许删除的一端(队首)

队尾(Rear):允许插入的一端

FIFO:先进先出

不要求从数组首位开始存储队列

#define MaxSize 50            //定义队列中元素的最大个数
typedef struct{
ElemType data[MaxSize]; //存放队列元素
int front,rear; //队头指针和队尾指针
}SqQueue;

循环队列

其中,首尾相连的顺序存储的队列叫循环队列

入队:rear=(rear+1)%MaxSize

出队:front=(front+1)%MaxSize

队空:front=rear

队满:数组中仍有一个空余单元

队满时:(rear-front+MaxSize)%MaxSize

1.入队

bool EnQueue(SqQueue &Q,ElemType x){
if((Q.rear+)%MaxSize==Q.front) return false;//队满
Q.data[Q.rear]=x;
Q.rear=(Q.rear+)%MaxSize;
return true;
}

2.出队

bool DeQueue(SqQueue &Q,ElemType &x){
if(Q.rear==Q.front) return false;//队满
x=Q.data[Q.front];
Q.rear=(Q.front+)%MaxSize;
return true;
}

链式队列

typedef struct{  //链式队列结点
ElemType data;
struct Link Node *next;
}Link Node;
typedef struct{  //链式队列
ElemType data;
Link Node *front,*rear;//队头和队尾指针
}Link Queue;
 

1.入队

void EnQueue(LinkQueue &Q,ElemType x){
s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=x;
s->next=NULL;
Q.rear->next=s;
Q.rear=s;
}

2.出队

bool DeQueue(LinkQueue &Q,ElemType &x){
if(Q.front==Q.rear) return false; //空队
p=Q.front->next;
x=p->data;
Q.front->next=p->next;
if(Q.rear==p) Q.rear=Q.front; //原队列只有一个结点删后变空队
free(p);
return true;
}

双端队列

具体见上传图片

总结

最新文章

  1. POST在发送数据的时候使用的是HTTP命令
  2. Oracle EBS 初始化用户密码(转)
  3. 什么是xmlschema
  4. java基础介绍(转)
  5. MVC学习笔记---MVC的处理管线
  6. jquery优化02
  7. chrome的input默认样式黄色背景以及选中加粗的边框处理
  8. Java-note-输入流
  9. Java学习备忘录
  10. 时间紧迫,写一些 NavigationController 一次性返回2级界面甚至更多级的界面
  11. python正则表达式入门
  12. 【行为型】Interpreter模式
  13. 项目实战5—企业级缓存系统varnish应用与实战
  14. Mac上安装Charles进行抓包全流程设置
  15. Tomcat监听443端口的方法
  16. I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard.sh hacking
  17. C# 设计模式-工厂模式(Factory)
  18. python中readline判断文件读取结束的方法
  19. linux shell实现随机数多种方法(date,random,uuid)
  20. SQL Server: Top 10 Secrets of a SQL Server Expert

热门文章

  1. leetcode486
  2. python之operator模块
  3. RequestParam注解的Url参数被省略时该如何处理
  4. 【原创】基于UDP广播的局域网Web Window Service日志跟踪小工具
  5. SPQuery DateTime 类型查询
  6. Elasticsearch聚合限制内存使用
  7. spring aop自动代理注解配置之一
  8. 面试题:Java开发中的23种设计模式详解(转)
  9. lnmp+laravel部署到服务器出现 "GET / HTTP/1.1" 500 5
  10. PHP中 null ,false , 区别