大挪耗

C语言队列

  1. 实验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;
}

已发布

分类

可以收藏大挪耗一下。下载麻烦点城通网盘,站长保证下载速度,不会限速的,放心点就是了;分卷,安卓下载为txt:程序下载为url,不会下载参考不会下载。如果你想让本站活的久一点,请直接捐助

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注