#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 10
/* 用一个动态数组来实现队列 */ typedef struct Queue {
int Capacity;
int Front;
int Rear;
int Size;
int data[MAX_SIZE];
} Queue; void Error(char *error) {
printf("%s",error);
} void FatalError(char *fatalerror) {
printf("%s",fatalerror);
} int IsEmpty(Queue *Q) {
return Q->Size == ;
} int IsFull(Queue *Q) {
return Q->Size == Q->Capacity;
} void Init( Queue *Q ) {
Q->Size = ;
Q->Front = ;
Q->Rear = ;
Q->Capacity = MAX_SIZE;
} static int Succ(int value,Queue *Q) {
if(++value == Q->Capacity) {
value = ;
}
return value;
} void Enqueue(int X,Queue *Q) {
if( IsFull( Q ) )
FatalError("Full queue");
else {
Q->Size++;
Q->Rear = Succ(Q->Rear,Q);
Q->data[ Q->Rear ] = X;
}
} void Dequeue(Queue *Q) {
if(IsEmpty(Q))
FatalError("Empty queue");
else {
Q->Size--;
Q->Front = Succ(Q->Front,Q);
}
} int FrontAndDequeue(Queue *Q) {
int Tmp;
if(IsEmpty(Q))
Error("Empty queue");
else {
Q->Size--;
Tmp = Q->data[Q->Front];
Q->Front = Succ(Q->Front,Q);
return Tmp;
}
} void DisposeQueue( Queue *Q ) {
free(Q->data);
free(Q);
} main() {
Queue *q ;
Init(q);
int i;
for(i = ; i <MAX_SIZE; i++) {
Enqueue(i,q);
}
for(i = ; i <MAX_SIZE; i++) {
printf("%d\n",FrontAndDequeue(q));
}
}

C语言实现常用数据结构——队列的更多相关文章

  1. C语言实现常用数据结构——链表

    #include<stdio.h> #include<stdlib.h> typedef struct Node { int data; struct Node *next; ...

  2. C语言实现常用数据结构——堆

    #include<stdio.h> #include<stdlib.h> #define CAPACITY 20 /*堆有两个性质: * 1.结构性:堆必须是一颗完全二叉树 * ...

  3. C语言实现常用数据结构——图

    #include<stdio.h> #include<stdlib.h> #define SIZE 20 #define LENGTH(a) (sizeof(a)/sizeof ...

  4. C语言实现常用数据结构——二叉树

    #include<stdio.h> #include<stdlib.h> #define SIZE 10 typedef struct Tree { int data; str ...

  5. C语言实现常用数据结构——栈

    #include<stdio.h> #include<stdlib.h> //用链表实现栈 typedef struct Node { int data; struct Nod ...

  6. C语言数据结构-队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作

    1.数据结构-队列的实现-C语言 //队列的存储结构 #define MAXSIZE 100 typedef struct { int* base; //基地址 int _front; //头指针 i ...

  7. 1. C语言中的数据结构.md

    C语言内建数据结构类型 整型 整型数据是最基本的数据类型,不过从整形出发衍生出好几种integer-like数据结构,譬如字符型,短整型,整型,长整型.他们都是最基本的方式来组织的数据结构,一般是几位 ...

  8. Java 集合框架(常用数据结构)

    早在Java 2中之前,Java就提供了特设类.比如:向量(Vector).栈(Stack).字典(Dictionary).哈希表(Hashtable)这些类(数据结构)用来存储和操作对象组.虽然这些 ...

  9. C++常用数据结构的实现

    常用数据结构与算法的实现.整理与总结 我将我所有数据结构的实现放在了github中:Data-Structures-Implemented-By-Me 常用数据结构与算法的实现.整理与总结 KMP字符 ...

随机推荐

  1. oracle 数组

    定义一个长度为5的字符串数组 type str_array is varray(5) of varchar2(30); v_str_array str_array := expr_key_array( ...

  2. Python类型和对象

    关键字:Python 类型 对象原文:http://wiki.woodpecker.org.cn/moin/PyTypesAndObjects 关于本书 解释新式的Python对象(new-style ...

  3. Go程序开发---Go环境配置:CentOS6.5+Go1.8标准包安装

    1.Go安装 1.1Go的三种安装方式 Go有多种安装方式,可以选择自己习惯的方式进行,这里介绍三种安装方式: 1)Go源码安装 2)Go标准包安装 3)第三方工具安装 这里主要介绍下Go标准包在Ce ...

  4. Qt Installer Framework 3.0.1 Released(功能比较强)

    We are happy to announce the release of Qt IFW 3.0.1. 3.0.1 is fully compatible with 2.0.5, which me ...

  5. krpano全球漫游相同的声音和声音添加的场景(文章内容已移至krpano中国网站)

    请关注微信订阅号 krpano   watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG1ob2s=/font/5a6L5L2T/fontsize/400/f ...

  6. Sync Framework Toolkit 开源库

    Sync Framework Toolkit构建在Sync Framework 2.1之上,使用OData在所有平台或客户端——包括Windows Phone 7.Silverlight.Window ...

  7. 首个 C++ 编译器诞生 30 周年了,来听听 C++ 之父畅谈 C++

    原文  http://www.iteye.com/news/31076   C++ 之父 Bjarne Stroustrup 在 cfront 诞生 30 周年的访谈. 整整30年前,CFront 1 ...

  8. 自定义 DependencyProperty 与 RoutedEvent

    原文:自定义 DependencyProperty 与 RoutedEvent //自定义依赖属性 class MyBook : DependencyObject//依赖属性必须派生自Dependen ...

  9. jquery通过索引获取元素

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  10. Token的设计(2)

    词法分析 Token的几个种类 前端的第一步就是词法分析, 这个过程通俗来讲就是将源代码转化为一串Tokens. 所以首先应该想到的是, 到底该有哪几种类型的Token ? 关于这个问题我已经想过了, ...