#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedef struct QNode{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
int InitQueue(LinkQueue &Q){
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front) exit (OVERFLOW);
Q.front->next=NULL;
return 1;
}
int DestoryQueue(LinkQueue &Q){
while(Q.front){
Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;
}
return 1;
}
int ClearQueue(LinkQueue &Q){
Q.rear=Q.front;
return 1;
}
int QueueEmpty(LinkQueue Q){
if(Q.front==Q.rear){
printf("Q is Empty\n");
return 1;
}
else{
printf("Q isn't Empty\n");
return 0;
}
}
void QueueLength(LinkQueue Q){
int length=0;
while(Q.front){
length++;
Q.front=Q.front->next;
}
printf("The length of Q is %d\n",length-1);
}
int EnQueue(LinkQueue &Q,int e){
QueuePtr P;
P=(QueuePtr)malloc(sizeof(QNode));
if(!P) exit (OVERFLOW);
P->data=e;
P->next=NULL;
Q.rear->next=P;
Q.rear=P;
return 1;
}
int DeQueue(LinkQueue &Q,int &e){
QueuePtr P;
if(Q.front==Q.rear) return 0;
P=Q.front->next;
e=P->data;
Q.front->next=P->next;
if(Q.rear==P) Q.rear=Q.front;
free(P);
return 1;
}
int main() { //测试代码,可随意更改
LinkQueue Q;
int n,i,e;
InitQueue(Q);
scanf("%d",&n);
for(i=1;i<=n;i++)
EnQueue(Q, i);
QueueEmpty(Q);
QueueLength(Q);
for(i=1;i<=n;i++){
DeQueue(Q, e);
printf("%d ",e);
}
printf("\n");
DestoryQueue(Q);
return 0;
}
链式队列基本操作
猜你喜欢
转载自blog.csdn.net/m0_46200758/article/details/108276902
今日推荐
周排行