已经运行过了
#include<malloc.h> //头文件
#include<iostream.h>
#include<stdio.h>
#define DATATYPE1 int
typedef struct qnode
{
DATATYPE1 data;
struct qnode *next;
}LINKQLIST;
typedef struct
{
LINKQLIST *front,*rear;
}LINKQUEUE;
//链队列初始化
void initlinkqueue(LINKQUEUE *q)
{
q->front=(LINKQLIST *)malloc(sizeof(LINKQLIST));
(q->front)->next=NULL;
q->rear=q->front;
}
//判链队列空
int emptylinkqueue(LINKQUEUE *q)
{
int v;
if(q->front==q->rear)
v=1;
else
v=0;
return v;
}
//读链队列队首元素
DATATYPE1 getlinkfront(LINKQUEUE *q,DATATYPE1 v)
{
if(emptylinkqueue(q))
{
cout<<"队列为空!"<<endl;
v=NULL;
}
else
v=(q->front)->next->data;
return v;
}
//元素插入链队列
int enlinkqueue(LINKQUEUE *q,DATATYPE1 x)
{
(q->rear)->next=(LINKQLIST *)malloc(sizeof(LINKQLIST));
q->rear=(q->rear)->next;
(q->rear)->data=x;
(q->rear)->next=NULL;
return x;
}
//从链队列中删除元素
DATATYPE1 dellinkqueue(LINKQUEUE *q)
{
LINKQLIST *p;
DATATYPE1 v;
if(emptylinkqueue(q))
{printf("队列为空./n");
v=NULL;}
else
{p=(q->front)->next;
(q->front)->next=p->next;
if(p->next==NULL)
q->rear=q->front;
v=p->data;
free(p);}
return v;
}
//主函数
void main()
{
int i,x;
LINKQUEUE *q=(LINKQUEUE *)malloc(sizeof(LINKQUEUE));
initlinkqueue(q);
cout<<"请选择:1.读链队列队首元素 2.元素插入链队列 3.从链队列中删除元素 0.退出"<<endl;
cin>>i;
while(i!=0)
{
if(i==1)
{
x=getlinkfront(q,x);
if(x==0)
cout<<"读链队列队首元素失败!"<<endl;
else
cout<<"读链队列队首元素成功!其值为:"<<x<<endl;
}
else if(i==2)
{
cout<<"请输入要插入的数:"<<endl;
cin>>x;
x=enlinkqueue(q,x);
if(enlinkqueue(q,x))
cout<<"插入成功!其值为:"<<x<<endl;
else
cout<<"插入失败!"<<endl;
}
else if(i==3)
{
if(dellinkqueue(q))
cout<<"从链队列中删除元素成功!"<<endl;
else
cout<<"从链队列中删除元素失败!"<<endl;
}
cout<<"请选择:1.读链队列队首元素 2.元素插入链队列 3.从链队列中删除元素 0.退出"<<endl;
cin>>i;
}
}