- 实验2:实现环形队列的各种基本运算的算法
实验内容: 编写一个程序sqqueue.cpp,实现环形队列的各种基本运算(假设环形队列的元素类型为Elem Type为char),并在次基础上设计一个程序exp2-2.cpp,完成以下功能。
(1)初始化队列q。
(2)判断队列q是否为空。
(3)依次插入a、b、c。
(4)出队一个元素,输出该元素。
(5)依次进队d、e、f。
(6)输出出队序列。
(7)释放队列q。
#include <stdio.h>
#include <malloc.h>
#define MaxSize 15
typedef int 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 DestroyQueue(SqQueue *&q){
free(q);
}
//判断队列是否为空
bool QueueEmpty(SqQueue *q){
return (q->front==q->rear);
}
//进队列
bool enQueue (SqQueue *&q,ElemType e){
if ((q->rear+1)%MaxSize==q->front)
return false;
q->rear=(q->rear+1)%MaxSize;
q->data[q->rear]=e;
return true;
}
//出队列
bool deQueue(SqQueue *&q,ElemType &e){
if (q->front==q->rear)
return false;
q->front=(q->front+1)%MaxSize;
e=q->data[q->front];
return true;
}
//求队列的中元素的个数
int Count(SqQueue *q){
return (q->rear-q->front+MaxSize)%MaxSize;
}
int main(){
SqQueue *p;
int temp;
printf("(1)初始化队列q。\n");
InitQueue(p);
printf("(2)判断队列q是否为空。\n");
printf(QueueEmpty(p)?"空\n":"非空\n");
printf("(3)依次插入a、b、c。\n");
enQueue(p,'a');
enQueue(p,'b');
enQueue(p,'c');
printf("(4)出队一个元素,输出该元素。\n");
deQueue(p,temp);
printf("%c\n",temp);
printf("(5)依次进队d、e、f。\n");
enQueue(p,'d');
enQueue(p,'e');
enQueue(p,'f');
printf("(6)输出出队序列。\n");
while (QueueEmpty(p)==0){
deQueue(p,temp);
printf("%c\n",temp);
}
printf("(7)释放队列q。\n");
DestroyQueue(p);
return 0;
}
发表回复