循环队列(C语言版)
来源:互联网 发布:java extend 编辑:程序博客网 时间:2024/05/18 13:46
<pre name="code" class="cpp">#include <iostream>using namespace std;#define MAXSIZE 50typedef int QueueElementType; typedef struct {QueueElementType elem[MAXSIZE]; int front; //指向当前队头元素 int rear; //指向队尾元素的下一个位置}SeqQueue;void InitQueue(SeqQueue &Q);void InputQueue(SeqQueue &Q);bool EnterQueue(SeqQueue &Q,QueueElementType x);int DeleteQueue(SeqQueue &Q,QueueElementType &x);QueueElementType FrontQueue(SeqQueue Q);//返回队头元素QueueElementType BackQueue(SeqQueue Q);//返回队尾元素bool IsFull(SeqQueue Q);bool IsEmpty(SeqQueue Q);void OutputQueue(SeqQueue Q);int QueueLength(SeqQueue Q);int main(){ int x; SeqQueue q;InitQueue(q); InputQueue(q); x = FrontQueue(q); cout<<"队头元素为:"<<x<<endl; x = BackQueue(q); cout<<"队尾元素为:"<<x<<endl; OutputQueue(q); cout<<"Len:"<<QueueLength(q)<<endl; EnterQueue(q,20); cout<<"入队元素20后,"; OutputQueue(q); cout<<"进行一次出队操作!"<<endl; DeleteQueue(q,x); cout<<"出队元素为:"<<x<<endl; OutputQueue(q); x = BackQueue(q); cout<<"队尾元素为:"<<x<<endl;x = FrontQueue(q); cout<<"队头元素为:"<<x<<endl; return 0;}void InitQueue(SeqQueue &Q){ Q.front = Q.rear = 0;}void InputQueue(SeqQueue &Q){ cout<<"请输入一组元素,以-1结束:"; int m; cin>>m; while(m!=-1) { if(IsFull(Q)) cout<<"当前队列已满,无法插入"<<endl; else { EnterQueue(Q,m); cin>>m; } } }bool EnterQueue(SeqQueue &Q,QueueElementType x){ if((Q.rear+1)%MAXSIZE == Q.front) return false; Q.elem[Q.rear] = x; Q.rear = (Q.rear+1)%MAXSIZE; return true;}int DeleteQueue(SeqQueue &Q,QueueElementType &x){ if(IsEmpty(Q)) { cout<<"当前队列为空,出队列失败!"<<endl; return -1; } else { x = Q.elem[Q.front]; Q.front = (Q.front+1)%MAXSIZE; return 0; }}bool IsFull(SeqQueue Q){ return (Q.rear+1)%MAXSIZE == Q.front;}bool IsEmpty(SeqQueue Q){ return Q.front == Q.rear;}void OutputQueue(SeqQueue Q){ if(IsEmpty(Q)) cout<<"当前队列为空!"<<endl; int temp = Q.front; cout<<"Out:"; while(temp!=Q.rear) { cout<<Q.elem[temp]<<" "; temp = (temp+1)%MAXSIZE; } cout<<endl;}QueueElementType BackQueue(SeqQueue Q){ return Q.elem[(Q.rear-1)%MAXSIZE];}QueueElementType FrontQueue(SeqQueue Q){ return Q.elem[Q.front];}int QueueLength(SeqQueue Q){ return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;}
0 0
- 循环队列(C语言版)
- 循环队列(C语言版)
- 循环队列的实现(C语言版)
- 队列(C语言版)
- c语言版动态数组循环队列
- 以循环顺序表实现的队列ADT(C语言版)
- 数组实现队列(C语言版)
- 用数组实现队列(C语言版)
- 栈和队列(C语言版)
- 链队列-C语言版
- 数据结构-队列(C语言版)
- 《数据结构(C语言版)》- 队列
- 在严蔚敏《数据结构(C语言版)》中,不能用动态分配的一维数组来实现循环队列
- 学习笔记------数据结构(C语言版) 队列的顺序存储/循环队列
- 循环队列(c)
- 数据结构(1)队列(C语言版)
- 数据结构之队列(C语言版)
- 循环队列(C/C++)
- Smarty如何访问mysql查询出的结果为多行多列时的数据
- 素数环 -- C++实现
- OpenCV:使用VideoCapture类进行视频读取和显示
- Percona XtraDB Cluster安装部署
- 有向图的广度优先遍历
- 循环队列(C语言版)
- 黑马程序员 单例设计模式
- 黑马程序员 继承的知识点
- 中国四川省与新加坡签署深圳美女兼职q1831206035 真实
- 大数据处理时的字符串处理
- 版本新特性
- 黑马程序员 Java基础线程状态
- 微博
- Struts1.x系列教程(8):上传单个文件