队列的顺序存储结构
来源:互联网 发布:iphone 阅读软件 编辑:程序博客网 时间:2024/04/29 09:14
队列是一种先进先出(First In First Out)的线性表,简称FIFO。在队尾进行插入(front),在队头进行删除(rear)。
以下以一个循环队列为例进行实现。
循环队列空的条件是front == rear,当队列满时,保留一个元素空间,则队列满的条件是(rear+1)%MAXSIZE == front;如上图、下图所示。
#include<iostream>using namespace std;const int MAXSIZE = 20; const int OK = 1; const int ERROR =0; typedef int Status; typedef int ElemType; typedef struct{ ElemType data[MAXSIZE]; int front;//头,出 int rear;//尾,进 }SqQueue;Status InitQueue(SqQueue* Q){ Q->front = 0; Q->rear =0; return OK;}int QueueLength(SqQueue Q){ return (Q.rear-Q.front+MAXSIZE)%MAXSIZE; }Status EnQueue(SqQueue *Q, ElemType e){ if((Q->rear+1)%MAXSIZE == Q->front)//队列满 return ERROR; Q->data[Q->rear] = e; Q->rear = (Q->rear+1)%MAXSIZE; return OK;}Status DeQueue(SqQueue *Q,ElemType *e){ if(Q->front == Q->rear)//队列空 return ERROR; *e = Q->data[Q->front]; Q->front = (Q->front+1)%MAXSIZE; return OK;}void PrintQueue(SqQueue Q){ for(int i=Q.front;i<Q.rear;i++)//输出按普通队列输出,本demo中的队列是循环队列 cout<<Q.data[i]<<" "; cout<<endl;}int main(){ SqQueue queueA; InitQueue(&queueA); int i=0; for(i=0;i<10;i++) { EnQueue(&queueA, i*i); cout<<i*i<<"入队列"<<endl; } PrintQueue(queueA); cout<<"=========="<<endl; ElemType e; for(i=0;i<5;i++) { DeQueue(&queueA, &e); cout<<e<<"出队列"<<endl; } PrintQueue(queueA); getchar(); return 0;}结果
- 队列的顺序存储结构
- 队列的顺序存储结构
- 队列的顺序存储结构
- 队列的顺序存储结构
- 队列的顺序存储结构
- 队列的顺序存储结构
- 队列的顺序存储结构---循环队列
- 队列的顺序存储结构(循环队列)
- 数据结构(队列):队列的顺序存储结构
- 队列的顺序表存储结构
- 队列的顺序存储结构与操作
- 队列的顺序存储结构与操作
- 队列的顺序存储结构和链式存储结构
- 数据结构:队列的顺序存储结构(循环队列)
- 队列---顺序队列存储结构的不足(假溢出)
- 数据结构:队列的顺序存储结构(循环队列)
- 队列的顺序存储结构之循环队列
- 【队列】之顺序存储结构
- C#反射Assembly 详细说明
- No2、设计包含 min 函数的栈(栈)
- Linux重定位和管道
- .net解析、下载、处理html辅助类源码
- android系统服务详解
- 队列的顺序存储结构
- showDialog(8); public Dialog onCreateDialog(int id)
- 在Ubuntu中安装Qt SDK时候遇到需要安装C++编译器到问题解决方式
- oracle复制一张表(表结构和数据),2张表的数据转移;rename表名,字段名
- C#中使用正则表达式验证电话号码、手机号、身份证号
- java 获取ip
- 从Web Service获取JSON格式数据
- ubuntu 下装pyqt4
- java系统托盘的应用(http://bbs.csdn.net/topics/360128430)