队列

#include <stdio.h>  
#include "queue.h"


int main(void)
{
SqQueue qu;
ElemType e;

InitQueue(&qu);
printf("栈%s/n", (QueueEmpty(qu) == 0 ? "" : "不空"));
printf("a进栈/n"); EnQueue(&qu, 'a');
printf("b进栈/n"); EnQueue(&qu, 'b');
printf("c进栈/n"); EnQueue(&qu, 'c');
printf("d进栈/n"); EnQueue(&qu, 'd');
printf("栈%s/n", (QueueEmpty(qu) == 1 ? "" : "不空"));
GetHead(qu, &e);
printf("栈顶元素:%c/n", e);
printf("出栈次序:");

while((QueueEmpty(qu))) //栈空返回0,否则返回-1
{
DeQueue(&qu, &e);
printf("%c ", e);
}
printf("/n");

return 0;
}


[cpp] view plaincopyprint?
#ifndef QUEUE
#define QUEUE

#define QueueSize 100
typedef char ElemType ;

typedef struct
{
ElemType data[QueueSize];
int front, rear;
}SqQueue;

void InitQueue(SqQueue *qu); //初始化队列

int EnQueue(SqQueue *qu, ElemType x); //进队列算法

int DeQueue(SqQueue *qu, ElemType *x); //出队列算法

int GetHead(SqQueue qu, ElemType *x); //取对头元素

int QueueEmpty(SqQueue qu); //判断对空算法



#endif


[cpp] view plaincopyprint?
#include <stdio.h>
#include "queue.h"

/************************************************
** 函数名:void InitQueue(SqQueue *qu)
** 功能: 初始化队列
** 描述: 无
** 作者: 庞辉
************************************************
*/

void InitQueue(SqQueue *qu)
{
qu->front = qu->rear = 0;
}

/************************************************
** 函数名:int EnQueue(SqQueue *qu, ElemType x)
** 功能: 进队列算法
** 描述: 队满返回-1
** 作者: 庞辉
************************************************
*/

int EnQueue(SqQueue *qu, ElemType x)
{
if((qu->rear + 1) % QueueSize == qu->front)
{
return -1;
}
else
{
qu->rear = (qu->rear + 1) % QueueSize;
qu->data[qu->rear] = x;

return 0;
}
}

/************************************************
** 函数名:int DeQueue(SqQueue *qu, ElemType *x)
** 功能: 出队列算法
** 描述: 队空返回-1
** 作者: 庞辉
************************************************
*/

int DeQueue(SqQueue *qu, ElemType *x)
{
if(qu->rear == qu->front)
{
return -1;
}
else
{
qu->front = (qu->front + 1) % QueueSize;
*x = qu->data[qu->front];

return 0;
}
}

/************************************************
** 函数名:int GetHead(SqQueue *qu, ElemType *x)
** 功能: 取对头元素
** 描述: 队空返回-1
** 作者: 庞辉
************************************************
*/

int GetHead(SqQueue qu, ElemType *x)
{
if(qu.front == qu.rear)
{
return -1;
}
else
{
*x = qu.data[(qu.front + 1) % QueueSize];
return 0;
}
}

/************************************************
** 函数名:int QueueEmpty(SqQueue qu)
** 功能: 判断对空算法
** 描述: 队空返回-1,否则返回0
** 作者: 庞辉
************************************************
*/

int QueueEmpty(SqQueue qu)
{
if(qu.rear == qu.front)
{
return -1;
}
else
{
return 0;
}
}



原文地址:https://www.cnblogs.com/pang123hui/p/2309940.html