队列
来源:互联网 发布:怎么在电脑上切换网络 编辑:程序博客网 时间:2024/05/21 17:45
队列(queue):插入和删除在不同端进行的线性表。
队尾(rear):添加新元素的一端。
队首(front):删除元素的一端。
时间有序表:先进先出(FIFO) 特征的线性结构。
队空:
front=0;
rear=-1;
插入A元素:
front=0;
rear=0;
队列满:
rear=MaxSize-1
空队列:front==rear;
入队列:sq[++rear]=x;
出队列:x=sq[++fromt];
当front!=-1时,存在假溢出;
解决队列溢出的方法:
循环队列
–基本思想:把队列设想成环形,让sq[0]接在sq[mSize-1]之后
队列的大小为M,若rear+1==M,则令rear=0;
–入队:rear=(rear+1)%mSize; sq[rear]=x;
–出队:front=(front+1)%mSize; x=sq[front];
队空:front==rear
队满:(rear+1)%mSize==front
队中结点的个数:(rear-front+mSize)%mSize
#include<iostream>using namespace std;class arrQueue{private:int mSize;int front;int rear;int *st;public:arrQueue(int size){mSize=size+1; //浪费一个存储空间以区别空队列和满队列front=rear=0;st=new int[mSize];}~arrQueue(){ delete[]st;}void clear(){ front=rear; }bool enQueue(int item);bool deQueue(int & item);bool getFront(int & item);void show();};void arrQueue::show(){if (front==rear){cout<<"空栈!!!\n";}else{int k=(rear-front+mSize)%mSize;int j=front;cout<<"此队列为:\n";for (int i=0;i<k;i++){cout<<st[j]<<endl;j=(j+1)%mSize;}}}bool arrQueue::getFront(int & item){if (front==rear){cout<<"空栈,无法取出!!!\n";return false;}item=st[front];return true;}bool arrQueue::deQueue(int & item){if (front==rear){cout<<"空栈,无法进行删除\n";return false;}item=st[front];front=(front+1)%mSize;return true;}bool arrQueue::enQueue(int item){if ((rear+1)%mSize==front){cout<<"队列已满,不能入队列!!!"<<endl;return false;}st[rear]=item;rear=(rear+1)%mSize;//注意在循环队列中,rear指向的是空,而不是最后一个return true;}int main(){arrQueue a(3);a.enQueue(1);a.enQueue(2);a.enQueue(3);a.enQueue(4);a.show();int temp=0;a.deQueue(temp);cout<<temp<<endl;a.getFront(temp);cout<<temp<<endl;return 0;}
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 如何动态创建ACCESS数据库
- 关于控件重绘函数/消息 OnPaint,OnDraw,OnDrawItem,DrawItem的区别
- TransactionScope异常:该伙伴事务管理器已经禁止了它对远程/网络事务的支持
- listener
- 开发者:我待iOS如初恋 Android虐我千百遍
- 队列
- Spring Batch for Excel
- 【Ajax】Ajax科普贴
- 字母列表快速搜索控件
- boost python的使用
- kernel helloworld程序
- eclipse注释字体设置 自动注释格式设置
- 工程造价分析
- ubuntu qt4下链接数据库 QSqldatabase:QMYSQL driver not loaded available drivers:QSQLITE 解决方案