c语言中的队列问题
#include
#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
#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;
}
}
/*********************************
本文通过一个C语言程序示例介绍了如何实现并操作队列数据结构,包括队列的初始化、元素入队、出队及获取队首元素等基本操作。

5373

被折叠的 条评论
为什么被折叠?



