#include
#include
typedef int ElemType;
typedef struct QNode{
ElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
//初始化一个空队列
void InitQueue(LinkQueue *Q){
Q->front=Q->rear=(QNode*)malloc(sizeof(QNode));
if(!Q->front) exit(0);
Q->front=Q->rear;
Q->front->next=NULL;
}
//在队尾插入n个结点
void insert(LinkQueue *Q,int i){
QueuePtr p;
int j=0;
for(;j
p=(QNode*)malloc(sizeof(QNode));
if(!p) break;
printf("请输入数据\n");
scanf("%d",&p->data);
p->next=NULL;//队尾的后继指针为空
Q->rear->next=p;
Q->rear=p;
}
}
//在队头删除n个结点并输出数据
void DelQueue(LinkQueue *Q,int i){
int j=0;
QueuePtr p;
printf("********************\n");
while(jfront!=Q->rear)){//判断队为空列是否
j++;
p=Q->front->next;
printf("%d\n",p->data);
if(p==Q->rear){
Q->front=Q->rear;//此时队列为空,将队头和队尾为同一结点
}else{
Q->front->next=p->next;
}
free(p);
}
}
int main()
{ LinkQueue Q;
InitQueue(&Q);
int n,m;
printf("请输入数据\n");
scanf("%d",&n);
insert(&Q,n);
printf("请输入数据\n");
printf("********************\n");
scanf("%d",&m);
DelQueue(&Q,m);
return 0;
}