第七周项目一—建立顺序环形队列算法库

来源:互联网 发布:fifaol3 超玩数据库 编辑:程序博客网 时间:2024/06/07 19:28
/*         * Copyright (c) 2017,烟台大学计算机学院         * All right reserved.         * 文件名称:main.cpp        * 作者:  王华慧   * 完成日期:2017年10月24日         * 版本号:v1.0         *         * 问题描述:建立顺序环形队列算法库      * 输入描述:标准函数输入         * 程序输出:标准函数输出    */        

sqqueue.h 存放函数头文件

#pragma once#ifndef SQQUEUE_H_INCLUDED  #define SQQUEUE_H_INCLUDED  #define MaxSize 5  typedef char ElemType;typedef struct{ElemType data[MaxSize];int front, rear;     /*队首和队尾指针*/} SqQueue;void InitQueue(SqQueue *&q);  //初始化顺序环形队列  void DestroyQueue(SqQueue *&q); //销毁顺序环形队列  bool QueueEmpty(SqQueue *q);  //判断顺序环形队列是否为空  int QueueLength(SqQueue *q);   //返回队列中元素个数,也称队列长度  bool enQueue(SqQueue *&q, ElemType e);   //进队  bool deQueue(SqQueue *&q, ElemType &e);  //出队  #endif // SQQUEUE_H_INCLUDED  

sqqueue.cpp 定义函数存放

#include <stdio.h>  #include <malloc.h>  #include "sqqueue.h"  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);}int QueueLength(SqQueue *q)   //返回队列中元素个数,也称队列长度  {return (q->rear - q->front + MaxSize) % MaxSize;}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;

主函数main.cpp

#include <stdio.h>  #include "sqqueue.h"  #include <iostream>int main(){ElemType e;SqQueue *q;printf("(1)初始化队列q\n");InitQueue(q);printf("(2)依次进队列元素a,b,c\n");if (enQueue(q, 'a') == 0) printf("队满,不能进队\n");if (enQueue(q, 'b') == 0) printf("队满,不能进队\n");if (enQueue(q, 'c') == 0) printf("队满,不能进队\n");printf("(3)队列为%s\n", (QueueEmpty(q) ? "空" : "非空"));if (deQueue(q, e) == 0)printf("队空,不能出队\n");elseprintf("(4)出队一个元素%c\n", e);printf("(5)队列q的元素个数:%d\n", QueueLength(q));printf("(6)依次进队列元素d,e,f\n");if (enQueue(q, 'd') == 0) printf("队满,不能进队\n");if (enQueue(q, 'e') == 0) printf("队满,不能进队\n");if (enQueue(q, 'f') == 0) printf("队满,不能进队\n");printf("(7)队列q的元素个数:%d\n", QueueLength(q));printf("(8)出队列序列:");while (!QueueEmpty(q)){deQueue(q, e);printf("%c ", e);}printf("\n");printf("(9)释放队列\n");DestroyQueue(q); system("pause");return 0;}
运行结果



区分和栈和队列顺序表的建立,有相同之处也有不同的地方,还是需要好好学习,个人思路上还是有点跟不上

原创粉丝点击