📄 zhan.txt
字号:
#include <cstdlib>
#include <iostream>
#include<stdlib.h>
using namespace std;
typedef int ElemType;
struct Queue{
ElemType *queue;
int front,rear,len;//front队首元素,rear队尾元素
int MaxSize;
};
void InitQueue(Queue& Q)//初始化队列
{
Q.MaxSize=10;//初始化队列为十个元素位置
Q.queue=new ElemType[Q.MaxSize];//动态分配存储空间
Q.front=Q.rear=0;//初始队列为空
}
void EnQueue(Queue& Q, ElemType item)//向队中插入一个元素item,若队列已满重新分配
{
//对存储空间使用完的处理
if((Q.rear+1)%Q.MaxSize==Q.front){
int k=sizeof(ElemType);
//扩大2倍存储空间
Q.queue=(ElemType*)realloc(Q.queue,2*Q.MaxSize*k);
if(Q.rear!=Q.MaxSize-1){
for(int i=0;i<=Q.rear;i++)
Q.queue[i+Q.MaxSize]=Q.queue[i];
Q.rear+=Q.MaxSize;
}
Q.MaxSize=2*Q.MaxSize;
}
Q.rear=(Q.rear+1)%Q.MaxSize;
Q.queue[Q.rear]=item;
}
ElemType OutQueue(Queue& Q)//从队列中删除元素并且返回
{
if(Q.front==Q.rear){
cerr<<"队列为空,无法删除"<<endl;
exit(1);
}
Q.front=(Q.front+1)%Q.MaxSize;//使队首指针指向下一个位置
return Q.queue[Q.front];//返回队首元素
}
ElemType PeekQueue(Queue& Q)//读取队列元素
{
if(Q.front==Q.rear){
cerr<<"队列为空,无法读取"<<endl;
exit(1);
}
return Q.queue[(Q.front+1)%Q.MaxSize];
}
bool EmptyQueue(Queue& Q)//判断队列是否为空
{
return Q.front==Q.rear;
}
void ClearQueue(Queue& Q)//清除队列元素
{
if(Q.queue!=NULL) delete [] Q.queue;
Q.front=Q.rear=0;
Q.queue=NULL;
Q.MaxSize=0;
}
int main(int argc, char *argv[] )
{
Queue q;
int a[6]={1,2,3,4,5,6};
int i;
for(i=0;i<6;i++) EnQueue(q,a[i]);
cout<<OutQueue(q);
system("PAUSE");
return EXIT_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -