已经在vc上调试过了
#include<iostream.h>
#include<stdio.h>
#include<malloc.h>
#define DATATYPE1 int
#define MAXSIZE 5
typedef struct
{
DATATYPE1 data[MAXSIZE];
int front,rear;
}SEQQUEUE;
//初始化队列
void initqueue(SEQQUEUE *q)
{
q->rear=q->front=0;
}
//判队列空函数
int empty(SEQQUEUE *q)
{
if(q->rear==q->front)
return 1;
else
return 0;
}
//取队头元素
DATATYPE1 getfront(SEQQUEUE *q,DATATYPE1 v)
{
if(empty(q))
{printf("队列为空./n");
v=NULL;}
else
v=q->data[(q->front+1)%MAXSIZE];
return v;
}
//队尾插入元素
int enqueue(SEQQUEUE *q,DATATYPE1 x)
{
int r;
if(q->front==(q->rear+1)%MAXSIZE)
{printf("队列已满!/n");
r=0;}
else
{q->rear=(q->rear+1)%MAXSIZE;
(q->data)[q->rear]=x;
r=1;}
return r;
}
//队头删除元素
DATATYPE1 dequeue(SEQQUEUE *q)
{
DATATYPE1 v;
if(empty(q))
{printf("队列为空./n");
v=NULL;}
else
{q->front=(q->front+1)%MAXSIZE;
v=(q->data)[q->front];}
return v;
}
void main()
{
int i,x,y;
SEQQUEUE *q=(SEQQUEUE *)malloc(sizeof(SEQQUEUE));
inintqueue(q);
cout<<"请选择:1.取队头元素 2.队尾插入元素 3.队头删除元素 0.退出"<<endl;
cin>>i;
while(i!=0)
{
if(i==1)
{
x=getfront(q,x);
if(x==0)
cout<<"取队头元素失败!"<<endl;
else
cout<<"取队头元素成功!其值为:"<<x<<endl;
}
if(i==2)
{
cout<<"请输入要插入的数:"<<endl;
cin>>x;
if(enqueue(q,x))
cout<<"队尾插入元素成功!其值为:"<<x<<endl;
else
cout<<"队尾插入元素失败!"<<endl;
}
if(i==3)
{
if(dequeue(q))
cout<<"删除成功!"<<endl;
else
cout<<"删除失败!"<<endl;
}
cout<<"请选择:1.取队头元素 2.队尾插入元素 3.队头删除元素 0.退出"<<endl;
cin>>i;
}
}