数据结构的C实现_循环队列

原创 2012年03月22日 18:39:21
//编译环境 visual studio 2008,win32 console application.

//CyclicQueue.c

//循环队列
#include <stdio.h>
#include <stdlib.h>
#define    OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 10//循环队列的最大元素数量
typedef char elemType;//元素类型

typedef struct _queue
{
elemType elems[MAXSIZE];
elemType front,rear;
}Queue;

//初始化队列
int InitQueue(Queue *q)
{
q->front=q->rear=0;
return OK;
}

//遍历队列
int ShowQueue(Queue *q)
{
int i;
if(q->front==q->rear)
{
printf("队列为空\n");
return ERROR;
}
printf("队列中的元素为:\n");
for(i=((q->front)%MAXSIZE);i<q->rear;i=((i+1)%MAXSIZE))
printf(" %c",q->elems[i]);
printf("\n");
printf("队首元素为%c\n",q->elems[q->front]);
printf("队尾元素为%c\n",q->elems[q->rear-1]);
return OK;
}

//向队尾插入元素e
int InQueue(Queue *q,elemType e)
{
if((q->rear+1)%MAXSIZE==q->front)
{
printf("空间不足\n");
return(OVERFLOW);
}
q->elems[q->rear]=e;
q->rear=(q->rear+1)%MAXSIZE;
return OK;
}

//从队首删除元素
int OutQueue(Queue *q)
{
if(q->front==q->rear)
{
printf("队列为空\n");
return ERROR;
}
printf("被删除的队首元素为%c\n",q->elems[q->front]);
q->front=(q->front+1)%MAXSIZE;
return OK;
}

//队列中的元素个数
int Length(Queue *q)
{
return (q->rear-q->front+MAXSIZE)%MAXSIZE;
}

main()
{
Queue q;
InitQueue(&q);
ShowQueue(&q);

printf("对尾插入元素...\n");
InQueue(&q,'a');
InQueue(&q,'b');
InQueue(&q,'c');
InQueue(&q,'d');
ShowQueue(&q);
printf("队列中的元素个数为%d\n",Length(&q));

printf("队首删除元素..\n");
OutQueue(&q);
ShowQueue(&q);
} 


数据结构:循环队列(C语言实现)

生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题;从生活中,可以抽象出队列的概念,队列就是一个能够实现“先进先出”的存储结构。队列分为链式队列和...
  • lpp0900320123
  • lpp0900320123
  • 2014年03月07日 19:15
  • 86850

循环队列–C语言实现–数据结构

循环队列–C语言实现–数据结构目录循环队列C语言实现数据结构目录 一 要求 二 循环队列 三 循环队列的算法设计 1 建立循环队列 2 置空队列 3 入队 4 出队 5 打印队 四 程序 1 程序的结...
  • sinat_34450204
  • sinat_34450204
  • 2017年06月22日 16:36
  • 435336

数据结构循环队列实现杨辉三角

数据结构顺序,链式实现栈和队列的相关操作,并用循环队列实现杨辉三角。1.采用链式存储实现栈的初始化、入栈、出栈操作。 链式栈中首先确定栈底指针,再入栈,并移动栈顶指针。#include #incl...
  • cherubim5
  • cherubim5
  • 2016年04月24日 16:43
  • 3138

数据结构(三)——队列及实现、循环队列实现

一、队列     队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称...
  • fansongy
  • fansongy
  • 2011年09月17日 17:03
  • 13516

JAVA数据结构之循环队列的实现

1、循环队列CircleQueue类的实现代码如下所示: public class CircleQueue { private Object[] array; private int capac...
  • dianzigaoshou
  • dianzigaoshou
  • 2017年07月07日 11:18
  • 185

循环队列的综合操作(出入队、获取队长度)C语言实现

线性表有顺序存储和链式存储,栈是线性表,所以也有两种存储方式。同样,队列作为一种特殊的线性表,也同样存在两种存储方式。 那就是顺序队列、链式队列两种 这里主要介绍顺序队列,链式队列我在...
  • zxnsirius
  • zxnsirius
  • 2016年04月21日 21:04
  • 1683

数据结构——循环队列存储结构以及实现

队列的顺序存储结构,是将元素存在一个一维数组中,队头所在的位置下标是0,当要入队操作时,直接在队尾后一个位置插入一个结点即可,时间复杂度为O(1)。而出队列,出队的元素下标为0,所以队列中所有的元素都...
  • Carry_zwxb
  • Carry_zwxb
  • 2016年10月30日 05:25
  • 1406

C#数据结构回顾之循环队列

引言:队列就和我们平常排队买肾6一样,排队第一个肯定先能买到,也具有“先进先出”即所谓的FIFO,其实质用一维数组来存放顺序队列中的数据元素。插入操作限定在表的尾部而其它操作限定在表的头部进行的。队头...
  • CrazyMo_
  • CrazyMo_
  • 2015年05月29日 16:17
  • 1381

数据结构 — 6.顺序队列(循环)实现二叉树层次遍历

【问题描述】编写按层次顺序(同一层自左至右)遍历二叉树的算法 【输入形式】A B * C * * D * *   【输出形式】A B D C /* 1.顺序循环队列 2.二叉...
  • PeersLee
  • PeersLee
  • 2015年10月29日 12:01
  • 2830

循环队列及C语言实现<一>

循环队列是为了充分利用内存,进行数据操作的一种基本算法。具体实现方式可划分为:链式队列和静态队列,这里所谓的静态是指在一片连续的内存区域进行数据操作。本文只讲述静态队列,也是最简单的实现方式,静态队列...
  • JAZZSOLDIER
  • JAZZSOLDIER
  • 2016年09月21日 22:34
  • 3846
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构的C实现_循环队列
举报原因:
原因补充:

(最多只允许输入30个字)