队列
#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;
}
}