数据结构之队列(数组队列)
2014-03-14 11:44
435 查看
# include <stdio.h> # include <stdlib.h> #define Array_length 8 typedef struct Queue { int * pBase; int front; int rear; }QUEUE,* PQUEUE; void init(PQUEUE); //初始化队列 bool in(PQUEUE,int); //入队 bool out(PQUEUE,int *); //出队 bool empty(PQUEUE); //是否空队列 bool full(PQUEUE); //是否队列满 void traverse(PQUEUE); //遍历输出队列 int main() { QUEUE q; int val; init(&q); in(&q,1); in(&q,2); in(&q,3); in(&q,4); in(&q,5); in(&q,6); in(&q,7); in(&q,8); traverse(&q); if (out(&q,&val)) printf("出队成功,出队数据为:%d\n",val); if (out(&q,&val)) printf("出队成功,出队数据为:%d\n",val); if (out(&q,&val)) printf("出队成功,出队数据为:%d\n",val); traverse(&q); return 0; } void init(PQUEUE pQ) { pQ->pBase=(int*)malloc(sizeof(int)*Array_length); pQ->front=0; pQ->rear=0; } bool full(PQUEUE pQ) { if ( (pQ->rear+1) % Array_length == pQ->front ) return true; return false; } bool empty(PQUEUE pQ) { if (pQ->front==pQ->rear) return true; return false; } bool in(PQUEUE pQ,int val) { if (full(pQ)) return false; pQ->pBase[pQ->rear]=val; pQ->rear=(pQ->rear+1) % Array_length; return true; } bool out(PQUEUE pQ,int * pVal) { if (empty(pQ)) return false; *pVal=pQ->pBase[pQ->front]; pQ->front=(pQ->front+1) % Array_length; return true; } void traverse(PQUEUE pQ) { int p=pQ->front; while((p)%Array_length!=pQ->rear) { printf("%d ",pQ->pBase[p]); p+=1; } printf("\n"); }
相关文章推荐
- ruby 数组使用教程
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 算法系列15天速成 第九天 队列
- C++ 关于STL中sort()对struct排序的方法
- 学习使用PHP数组
- mysql 队列 实现并发读
- 一个PHP数组应该有多大的分析
- 将数组写入txt文件 var_export
- PHP操作数组的一些函数整理介绍
- PHP关联数组的10个操作技巧
- PHP去除数组中重复的元素并按键名排序函数
- PHP下对数组进行排序的函数
- PHP中常用数组处理方法实例分析
- PHP学习笔记之数组篇
- php 数组使用详解 推荐
- C# Struct的内存布局问题解答
- PHP extract 将数组拆分成多个变量的函数
- PHP中数组定义的几种方法