无标题文章

#include<stdio.h>
#include<malloc.h>
#include<windows.h>

#define MaxSize 50

//构造环形队列的数据类型

typedef char ElemType;

struct queue
{
 ElemType data[MaxSize];//顺序存储数据元素
 int front,rear;//分别是队首队尾的指示器

};

typedef struct queue Queue;
/*
函数功能:InitQueue,初始化空队列
函数形参:Queue *&Q
函数返回值:无
*/
void InitQueue(Queue *&Q)
{
 //初始化空队列,申请起始地址,并初始化两个指示器的位置
 Q=(Queue *)malloc(sizeof(Queue));
 Q->front=Q->rear=0;
}
/*
函数功能:QueueEmpty,1代表空队列,0代表非空队列
函数形参:Queue *Q
函数返回值:int
*/
int QueueEmpty(Queue *Q)
{
 return (Q->front==Q->rear);
}
/*
函数功能:enQueue 入队
函数形参:Queue*Q,ElemType e入队元素值
函数返回值:若队满则返回0表示入队失败,否则返回1,入队成功
*/
int enQueue(Queue *Q,ElemType e)
{
 //判断队是否满
 if((Q->rear+1)%MaxSize==Q->front) return 0;//入队失败
 //入队,队尾指示器加1,元素入队
 Q->rear=(Q->rear+1)%MaxSize;
 Q->data[Q->rear]=e;
 return 1;//入队成功
}
/*
函数功能:deQueue,出队
函数形参:Queue *Q,ElemType &e临时存放被出队元素
函数返回值:若队空则返回0表示出队失败,否则返回1,出队成功
*/
int deQueue(Queue *Q,ElemType &e)
{
 //判断队是否空
 if(Q->front==Q->rear) return 0;
 //出队
 //e=Q->data[(Q->front+1)%MaxSize];
 Q->front=(Q->front+1)%MaxSize;
 e=Q->data[Q->front];
 return 1;//出队成功
}
/*
函数功能:DestroyQueue 释放内存
函数形参:Queue *Q
函数返回值:无
*/
void DestroyQueue(Queue *&Q)
{
 free(0);
 Q=NULL;
}
/*
函数功能:DispQueue从队首到队尾打印所有元素
函数形参:Queue *Q
函数返回值:无
*/
void DispQueue(Queue *&Q)
{
 int i;
 for(i=Q->front;i<Q->rear;i++)
  printf("%c ",Q->data[i+1]);
 printf("\n");
}

void QueueLength(Queue *Q,int &a)
{
 a=(Q->rear-Q->front+MaxSize)%MaxSize;
}


int main()
{
 Queue *Q;ElemType e,a;int b;
 printf("(1)环形队列初始化。。。\n");InitQueue(Q);
 printf("(2)环形队列当前状态是:");
 if(QueueEmpty(Q)==1) printf("空队\n");
 else                 printf("非空队\n");
 printf("(3)元素入队\n");
 if(enQueue(Q,'A')==1) printf("入队成功\n");
 else                 printf("入队失败\n");
 if(enQueue(Q,'B')==1) printf("入队成功\n");
 else                 printf("入队失败\n");
 if(enQueue(Q,'C')==1) printf("入队成功\n");
 else                 printf("入队失败\n");
 printf("(4)环形队列当前状态是:");
 if(QueueEmpty(Q)==1) printf("空队\n");
 else                 printf("非空队\n");
 printf("打印元素\n");DispQueue(Q);
 printf("统计长度\n");QueueLength(Q,b);
 printf("%d",b);
 printf("(5)元素出队");
 if(deQueue(Q,e)==1) printf("出队成功,出队元素为:%c\n",e);
 else                printf("出队失败");
 printf("(6)销毁队列\n");DestroyQueue(Q);
 system ("PAUSE");
 return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 程序 #include #include<malloc.h>#include<windows.h> #define...
    Doloresxxxx阅读 265评论 0 0
  • #include #include #include #define MaxSize 50 //构造环形队列的数据...
    TDKDPIKA阅读 269评论 0 0
  • 【2017年最新】☞ iOS面试题及答案 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经...
    紫色冰雨阅读 623评论 0 1
  • 概述 这篇文章中,我不会说多线程是什么、线程和进程的区别、多线程有什么用,当然我也不会说什么是串行、什么是并行等问...
    hashakey阅读 310评论 0 0
  • #include #include <malloc.h>#include #include <windows.h...
    TDKDPIKA阅读 219评论 0 0