作者在 2017-04-27 19:19:23 发布以下内容
#include<iostream>
#include<cstdlib>
#define MAX 100
using namespace std;
typedef struct Queue
{
int Array[MAX];
int Front;
int Rear;
} *CircleQueue;
CircleQueue Create(void); //创建一个队列
int IsEmpty(CircleQueue Q); //是否为空
int IsFull(CircleQueue Q); //是否已满
void EnQueue(CircleQueue Q,int X); //入列
void DeQueue(CircleQueue Q); //出列
void GetQueueFront(CircleQueue Q); //获取队头元素
void GetQueueRear(CircleQueue Q); //获得队尾元素
int main() //测试
{
CircleQueue Q=Create();
EnQueue(Q,100);
DeQueue(Q);
return 0;
}
int IsEmpty(CircleQueue Q)
{
return (Q->Rear-1)==0; //Q->Rear-1才是最后一个元素
}
int IsFull(CircleQueue Q)
{
return (Q->Rear-1-Q->Front)==MAX; //通过队列个数判断是否为满
}
void EnQueue(CircleQueue Q,int X)
{
if(IsFull(Q))
cout <<"队列已满不能插入 " <<endl ;
else
{
if(IsEmpty(Q)) //空队列情况入队
{
Q->Array[Q->Front]=X;
Q->Array[Q->Rear]=Q->Array[Q->Front];
Q->Rear=(Q->Rear+1)%MAX;//循环意义下的尾指针加1
}
else //非空入列
{
Q->Array[Q->Rear]=X;
Q->Rear=(Q->Rear+1)%MAX; //循环意义下的尾指针加1
}
cout <<endl <<Q->Array[Q->Rear-1] <<"入队后" <<endl ;
GetQueueFront(Q);
GetQueueRear(Q);
}
}
void DeQueue(CircleQueue Q)
{
if(IsEmpty(Q))
cout <<"队列为空不能出队 " <<endl ;
else //非空出列
{
Q->Front=(Q->Front+1)%MAX; //循环意义下的头指针加1
}
cout <<endl <<"出队后" <<endl ;
GetQueueFront(Q);
GetQueueRear(Q);
}
void GetQueueFront(CircleQueue Q)
{
cout <<"队头为" <<Q->Array[Q->Front] <<endl ;
}
void GetQueueRear(CircleQueue Q)
{
cout <<"队尾为" <<Q->Array[Q->Rear-1] <<endl ; //Q->Rear才是队尾的下标
}
CircleQueue Create(void)
{
int i,a[8]={8,9,11,7,12,15,14,18};
CircleQueue Q;
Q->Front=Q->Rear=0;
for(i=0;i<8;i++)
{
cout <<a[i] <<' ' ;
}
cout <<endl ;
for(i=0;i<8;i++)
{
if(i==0) //非空入列
{
Q->Array[Q->Front]=a[i]; //先给队头赋值
Q->Array[Q->Rear]=Q->Array[Q->Front];
Q->Rear=(Q->Rear+1)%MAX; //循环意义下的尾指针加1
}
else
{
Q->Array[Q->Rear]=a[i];
Q->Rear=(Q->Rear+1)%MAX; //循环意义下的尾指针加1
}
}
GetQueueFront(Q);
GetQueueRear(Q);
return Q;
}
#include<cstdlib>
#define MAX 100
using namespace std;
typedef struct Queue
{
int Array[MAX];
int Front;
int Rear;
} *CircleQueue;
CircleQueue Create(void); //创建一个队列
int IsEmpty(CircleQueue Q); //是否为空
int IsFull(CircleQueue Q); //是否已满
void EnQueue(CircleQueue Q,int X); //入列
void DeQueue(CircleQueue Q); //出列
void GetQueueFront(CircleQueue Q); //获取队头元素
void GetQueueRear(CircleQueue Q); //获得队尾元素
int main() //测试
{
CircleQueue Q=Create();
EnQueue(Q,100);
DeQueue(Q);
return 0;
}
int IsEmpty(CircleQueue Q)
{
return (Q->Rear-1)==0; //Q->Rear-1才是最后一个元素
}
int IsFull(CircleQueue Q)
{
return (Q->Rear-1-Q->Front)==MAX; //通过队列个数判断是否为满
}
void EnQueue(CircleQueue Q,int X)
{
if(IsFull(Q))
cout <<"队列已满不能插入 " <<endl ;
else
{
if(IsEmpty(Q)) //空队列情况入队
{
Q->Array[Q->Front]=X;
Q->Array[Q->Rear]=Q->Array[Q->Front];
Q->Rear=(Q->Rear+1)%MAX;//循环意义下的尾指针加1
}
else //非空入列
{
Q->Array[Q->Rear]=X;
Q->Rear=(Q->Rear+1)%MAX; //循环意义下的尾指针加1
}
cout <<endl <<Q->Array[Q->Rear-1] <<"入队后" <<endl ;
GetQueueFront(Q);
GetQueueRear(Q);
}
}
void DeQueue(CircleQueue Q)
{
if(IsEmpty(Q))
cout <<"队列为空不能出队 " <<endl ;
else //非空出列
{
Q->Front=(Q->Front+1)%MAX; //循环意义下的头指针加1
}
cout <<endl <<"出队后" <<endl ;
GetQueueFront(Q);
GetQueueRear(Q);
}
void GetQueueFront(CircleQueue Q)
{
cout <<"队头为" <<Q->Array[Q->Front] <<endl ;
}
void GetQueueRear(CircleQueue Q)
{
cout <<"队尾为" <<Q->Array[Q->Rear-1] <<endl ; //Q->Rear才是队尾的下标
}
CircleQueue Create(void)
{
int i,a[8]={8,9,11,7,12,15,14,18};
CircleQueue Q;
Q->Front=Q->Rear=0;
for(i=0;i<8;i++)
{
cout <<a[i] <<' ' ;
}
cout <<endl ;
for(i=0;i<8;i++)
{
if(i==0) //非空入列
{
Q->Array[Q->Front]=a[i]; //先给队头赋值
Q->Array[Q->Rear]=Q->Array[Q->Front];
Q->Rear=(Q->Rear+1)%MAX; //循环意义下的尾指针加1
}
else
{
Q->Array[Q->Rear]=a[i];
Q->Rear=(Q->Rear+1)%MAX; //循环意义下的尾指针加1
}
}
GetQueueFront(Q);
GetQueueRear(Q);
return Q;
}