65,210
社区成员
发帖
与我相关
我的任务
分享///////////////////////////////////////////////////////////////
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef int DataType;
// maximum size of a queue list
const int MaxQSize = 50;
class Queue
{
private:
// queue array and its parameters
int front, rear, count;
DataType qlist[MaxQSize];
public:
// constructor
Queue (void); // initialize integer data members
// queue modification operations
void QInsert(const DataType& item);
DataType QDelete(void);
void ClearQueue(void);
// queue access
DataType QFront(void) const;
// queue test methods
int QLength(void) const;
int QEmpty(void) const;
int QFull(void) const;
};
// initialize queue front, rear, count
Queue::Queue (void) : front(0), rear(0), count(0)
{
} //构造函数已给出
void Queue::QInsert(const DataType& item)
{
if((rear+1)%MaxQSize == front)
return;
qlist[rear]=item;
rear=(rear+1)%MaxQSize;
count++;
}
DataType Queue::QDelete(void)
{
if(front==rear)
cout << "Queue is empty" << endl;
DataType e= qlist[front];
front=(front+1)%MaxQSize;
count--;
return e;
}
void Queue::ClearQueue(void)
{
front=rear=0;
count=0;
}
DataType Queue::QFront(void) const
{
if(front==rear)
cout << "Queue is empty" << endl;
DataType e=qlist[front];
return e;
}
int Queue::QLength(void) const
{
return(rear-front+MaxQSize)%MaxQSize;
}
int Queue::QEmpty(void) const
{
if(front==rear)
return 1;
else
return 0;
}
int Queue::QFull(void) const
{
if(count == MaxQSize)
return 1;
else
return false;
}
int main()
{
return 0;
}
///////////////////////////////////////////////////////////////////
//以前学数据结构的时候写了一个关于队列的操作!
//你可以参考一下!
#include <iostream>
#include <cstdlib>
using namespace std;
typedef struct node
{
int data;
struct node *next;
}Qnode;
class Queue
{
public:
Queue();
void InitQueue();
void show()const;
void EnQueue(int e);
void DeQueue(int &e);
~Queue();
private:
Qnode *rear;
Qnode *front;
};
Queue::Queue()
{
front=new node;
rear=front;
front->next=NULL;
}
void Queue::InitQueue()
{
Qnode *p2=new node;
int i=0;
cout<<"请输入数值(-1 退出):";
cin>>p2->data;
while (p2->data!=-1)
{
++i;
if(i==1)
{
front->next=p2; //队首指针指向队首
rear->next=p2;
rear=p2;
}
else
{
rear->next=p2;
rear=p2;
}
p2=new node;
cin>>p2->data;
}
rear->next=NULL;
}
void Queue::show() const
{
if(front==rear)
cout<<"此队为空队!"<<endl;
else
{
node *p=front->next;
cout<<"顺序的队值为: "<<endl;
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
}
void Queue::EnQueue(int e) //入队
{
node *p=new node;
p->data=e;
p->next=NULL;
rear->next=p;
rear=p;
}
void Queue::DeQueue(int &e) //从队首删除一个元素
{
if (front==rear)
cout<<"此队为空队!"<<endl;
else
{
node *p=front->next;
e=p->data;
front->next=p->next;
if(rear==p)
rear=front;
delete p;
}
}
Queue::~Queue()
{
while(front)
{
rear=front->next;
delete front;
front=rear;
}
}
int main ()
{
Queue Q;
int e;
int flag=0;
while(true)
{
cout<<" ━━━━━━━━━━━━━━━━━━━━"<<endl;
cout<<" 1.初始化 2.入队 3.出对 4.显示 5.退出"<<endl;
cout<<" ━━━━━━━━━━━━━━━━━━━━"<<endl;
cout<<"\n请选择操作: ";
cin>>flag;
switch(flag)
{
case 1:
Q.InitQueue();
break;
case 2:
cout<<"请输入要进队数值:"<<endl;
cin>>e;
Q.EnQueue(e);
break;
case 3:
Q.DeQueue(e);
cout<<"出队数值: "<<e<<endl;
break;
case 4:
Q.show();
break;
case 5:
exit(0);
break;
default:
cout<<"\n输入错误,重新输入!\n"<<endl;
}
}
cout<<endl;
return 0;
}