明道王鸥近日接受采访:跪求C++高人拉,急用啊~!

来源:百度文库 编辑:高校问答 时间:2024/05/02 13:15:59
数组实现一个队列类的的出队和入队,用C++的MFC编辑一个对话框,当队列满就不能入队,当队列空就不能出队.跪求C++高人拉,急用啊~!
有两个按扭分别控制出队和入队,也可以用循环数组或链表实现
大家帮帮忙啊~~~~~~!

#include<iostream.h>
int MaxSize=5;

class CQueue
{
int *data;
int *front,*rear;
int length;
public:
CQueue(){data=front=rear=NULL;length=0;}
void InitQueue(){data=new int[MaxSize];}
int IsEmpty(){if(length==0)return 1;return 0;}
int IsFull(){if(length==MaxSize)return 1;return 0;}
void EnQueue(int x)
{
if(IsFull())
{cout<<"队列已满无法入对!"<<endl;return;}
if(NULL==front&&NULL==rear)
{*data=x;front=rear=data;length++;return;}
if(rear==data+MaxSize-1)
{rear=data;*rear=x;length++;return;}
rear=rear+1;
*rear=x;
length++;
}
int DeQueue()
{
if(IsEmpty()){cout<<"队列已空无法出对!"<<endl;return NULL;}
if(front==data+MaxSize-1)
{front=data;length--;return *(data+MaxSize-1);}
front=front+1;
length--;
return *(front-1);
}
void NEnQueue()
{
int x;
while(!IsFull())
{
cin>>x;
if(0==x)return;
EnQueue(x);
}
}
void QDeQueue()
{
while(!IsEmpty())
cout<<DeQueue()<<endl;
}
void NDeQueue(int x)
{
int m=x>length?length:x;
if(x>length){cout<<"队列无这么多元素!"<<endl;}
for(int i=0;i<m;i++)
{if(!IsEmpty())cout<<DeQueue()<<endl;}

}
~CQueue(){if(data)delete[] data;}
};

void main()
{
CQueue a;
a.InitQueue();
cout<<"输入0~5个元素,'0'为结束标志符!"<<endl;
a.NEnQueue();
cout<<"输出4个队列元素!"<<endl;
a.NDeQueue(4);
cout<<"输入1个元素为6!"<<endl;
a.EnQueue(6);
cout<<"输入所有元素!"<<endl;
a.QDeQueue();
}