版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhang_09_11/article/details/83475715
#include <stdio.h>
#include <malloc.h>
#define MaxSize 100
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize]; //数据域
int front,rear; //指针域
} SqQueue; //链栈类型定义
void InitQueue(SqQueue *&q)
{
q=(SqQueue *)malloc(sizeof(SqQueue));
q->front=q->rear=0;
}
void DestoryQueue(SqQueue *&q)
{
free(q);
}
int QueueEmpty(SqQueue *q)
{
return(q->front==q->rear);
}
int enQueue(SqQueue *&q,ElemType e)
{
if((q->rear+1)%MaxSize==q->front)
return 0;
q->rear=(q->rear+1)%MaxSize;
q->data[q->rear]=e;
return 1;
}
int deQueue(SqQueue *&q,ElemType &e)
{
if(q->rear==q->front)
return 0;
q->front=(q->front+1)%MaxSize;
e=q->data[q->front];
return 1;
}
int countQueue(SqQueue *&q)
{
return((q->rear-q->front+MaxSize)%MaxSize);
}
int main()
{
SqQueue *q;
ElemType e;
printf("(1)初始化队列q\n");
InitQueue(q);
printf("(2)队为:%s\n",(QueueEmpty(q)?"空":"非空"));
printf("(3)依次进队元素a,b,c");
enQueue(q,'a');
enQueue(q,'b');
enQueue(q,'c');
printf("\n(4)出队一个元素:");
deQueue(q,e);
printf("%c",e);
printf("\n(5)q队中元数个数:%d", countQueue(q));
printf("\n(6)再依次进队元素d,e,f");
enQueue(q,'d');
enQueue(q,'e');
enQueue(q,'f');
printf("\n(7)q队中元数个数:%d", countQueue(q));
printf("\n(8)出队全部元素:");
while(!QueueEmpty(q))
{
deQueue(q,e);
printf("%c",e);
}
printf("\n(9)销毁队列");
DestoryQueue(q);
return 0;
}