C语言实现常用数据结构——队列
#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语言实现常用数据结构——队列的更多相关文章
- C语言实现常用数据结构——链表
#include<stdio.h> #include<stdlib.h> typedef struct Node { int data; struct Node *next; ...
- C语言实现常用数据结构——堆
#include<stdio.h> #include<stdlib.h> #define CAPACITY 20 /*堆有两个性质: * 1.结构性:堆必须是一颗完全二叉树 * ...
- C语言实现常用数据结构——图
#include<stdio.h> #include<stdlib.h> #define SIZE 20 #define LENGTH(a) (sizeof(a)/sizeof ...
- C语言实现常用数据结构——二叉树
#include<stdio.h> #include<stdlib.h> #define SIZE 10 typedef struct Tree { int data; str ...
- C语言实现常用数据结构——栈
#include<stdio.h> #include<stdlib.h> //用链表实现栈 typedef struct Node { int data; struct Nod ...
- C语言数据结构-队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作
1.数据结构-队列的实现-C语言 //队列的存储结构 #define MAXSIZE 100 typedef struct { int* base; //基地址 int _front; //头指针 i ...
- 1. C语言中的数据结构.md
C语言内建数据结构类型 整型 整型数据是最基本的数据类型,不过从整形出发衍生出好几种integer-like数据结构,譬如字符型,短整型,整型,长整型.他们都是最基本的方式来组织的数据结构,一般是几位 ...
- Java 集合框架(常用数据结构)
早在Java 2中之前,Java就提供了特设类.比如:向量(Vector).栈(Stack).字典(Dictionary).哈希表(Hashtable)这些类(数据结构)用来存储和操作对象组.虽然这些 ...
- C++常用数据结构的实现
常用数据结构与算法的实现.整理与总结 我将我所有数据结构的实现放在了github中:Data-Structures-Implemented-By-Me 常用数据结构与算法的实现.整理与总结 KMP字符 ...
随机推荐
- 如何只安装dependencies
npm install --production 这样就会跳过devDependencies配置 参考链接 https://docs.npmjs.com/cli/install (如果想安装devDe ...
- [Scikit-Learn] - 数据预处理 - 缺失值(Missing Value)处理
reference : http://www.cnblogs.com/chaosimple/p/4153158.html 关于缺失值(missing value)的处理 在sklearn的prepro ...
- exponential family distribution(指数族分布)
1. exponential family 给定参数 η,关于 x 的指数族分布定义为如下的形式: p(x∣∣η)=h(x)g(η)exp{ηTu(x)} 其中 x 可以为标量也可以为矢量,可以为离散 ...
- numpy 辨异(二) —— np.identity()/np.eye()
import numpy as np; 两者在创建单位矩阵上,并无区别,两者的区别主要在接口上: np.identity(n, dtype=None):只能获取方阵,也即标准意义的单位阵: np.ey ...
- XBMC 最新版本号错误
1. Syntax error: "(" unexpected 改动 tools/depends下的makefile.include 将NDK_VER=0x9d
- c语言bit倒置最好的算法-离msb-lsb至lsb-msb
问题 什么是例如最好的算法,下面的转换? 0010 0000 => 0000 0100 从详细的转换MSB->LSB至LSB->MSB, 所有的Bit必须扭转,着.这并非字节顺序的交 ...
- VS2005下如何安装配置编译Qt4.6
本文将使用简单的几个步骤说明在VC 2005下如何编译安装并开发Qt4.6应用程序,其实大部分方法和Qt4.6.0是一样的,不过Qt4.6.0集成了Qt Creater,目录的形式有点改变了,现在我就 ...
- Leetcode 100 Same Tree 二叉树
就是判断两棵树的值和结构是否相同 注意:要判断是否所有的树节点是否为NULL /** * Definition for a binary tree node. * struct TreeNode { ...
- arcserver开发小结(一)
一.关于属性查询 由于要做属性查询,又重新玩起了arcmap中的select by attribute,有很多自己当初玩弄arcmap多年还不是很清楚的东西 1,字段名 (1)file geodata ...
- SICP 锻炼 (1.40)解决摘要
SICP 锻炼1.40 是一个休闲的工作非常easy,但它看起来很复杂,单的一道题. 题目原题例如以下: 请定义一个过程cubic, 它和newtons-method过程一起使用在以下形式的表达式里: ...