数据结构之队列的顺序实现
2015-08-23 14:41
721 查看
/*
实现功能:用顺序表实现队列的各种操作
编译环境:Windows 64b,vc6.0
日期: 2015/7/20
作者: wtt561111
*/
#define queue_max_num 10
#include "stdio.h"
#include "stdlib.h"
typedef struct SeqQueue *PSeqQueue;
struct SeqQueue {
int MAXNUM;//顺序队列中最大元素个数
int f,r;//front rear队头,队尾。队头出,队尾入。
int *q;
};
/*
创建一个空的列表,长度为m。
*/
PSeqQueue createEmptyQueue_seq(int m){
PSeqQueue paque=(PSeqQueue)malloc( sizeof(struct SeqQueue) );
if(paque==NULL){
printf("out of space!\n");
return NULL;
}
paque->q=(int *)malloc( sizeof(int)*m );
if(paque->q==NULL){
printf("out of space!\n");
return NULL;
}
paque->MAXNUM=m;
paque->f=0;
paque->r=0;
return paque;
}
/*****************************************************/
/*
判断一个队列是否为空,为空返回1,否则返回0。
*/
int isEmptyQueue_seq(PSeqQueue paque){
if(paque->f==0 && paque->r==0)
return 1;
return 0;
}
/*****************************************************/
/*
将x存入队列中,成功返回1,否则返回0。
*/
int enQueue_seq(PSeqQueue paque,int x){
if( ( (paque->r)+1 ) % (paque->MAXNUM) == paque->f ){//将一个顺序表当做环形来使用
//为了区别慢和空,舍弃一个单元不用
printf("overflow!\n");
return 0;
}
paque->q[paque->r]=x;
paque->r= ( (paque->r)+1 ) % paque->MAXNUM; //环形操作
//入列是rear变化,出列是front变化
return 1;
}
/*****************************************************/
/*
将队头元素出列,成功返回1,否则返回0。
*/
int deQueue_seq(PSeqQueue paque){
if(paque->f==0 && paque->r==0){
printf("empty\n");
return 0;
}
paque->f= ( (paque->f)+1 ) % paque->MAXNUM;
return 1;
}
/*****************************************************/
/********************主函数***************************/
int main(){
PSeqQueue paque_get=createEmptyQueue_seq(queue_max_num);
enQueue_seq(paque_get,110);
enQueue_seq(paque_get,111);
enQueue_seq(paque_get,112);
enQueue_seq(paque_get,113);
enQueue_seq(paque_get,114);
enQueue_seq(paque_get,115);
enQueue_seq(paque_get,116);
enQueue_seq(paque_get,117);
enQueue_seq(paque_get,118);
deQueue_seq(paque_get);
enQueue_seq(paque_get,120);
enQueue_seq(paque_get,121);
return 0;
}
相关文章推荐
- android 代码实现控件之间的间距
- [C/C++]反转链表
- [Android]在代码里运行另一个程序的方法
- 肯特·贝克:改变人生的代码整理魔法
- Linux C函数参考手册(PDF版)
- 网页恶意代码的预防
- 高手写的Tracer-Flash代码调试类代码下载
- C#实现基于链表的内存记事本实例
- CSS代码缩写技巧
- 非主流Q-zOne代码代码搜集第1/2页
- CreateWeb.vbs 代码
- Lua教程(十七):C API简介
- Lua中编译执行代码相关的函数详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- C#实现打造气泡屏幕保护效果
- 更有效率的css代码编写第1/3页
- 算法系列15天速成 第九天 队列