数据结构之队列的顺序实现

来源:互联网 发布:淘宝信用卡代付套现 编辑:程序博客网 时间:2024/05/01 04:40


/*实现功能:用顺序表实现队列的各种操作编译环境: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;}


1 0
原创粉丝点击