顺序队列
2015-09-09 09:25
169 查看
#include "stdio.h" #include <malloc.h> #define MAXSIZE 10 typedef int ElemType; typedef struct Node{ int front,rear; ElemType elem[MAXSIZE]; }SqQueue; SqQueue * InitQueue(){ SqQueue *q; q=(SqQueue *)malloc(sizeof(SqQueue)); if(q==NULL){ printf("初始化内存失败!"); return NULL; }else{ q->front=q->rear=0; return q; } } int QueueLength(SqQueue *q){ return (q->rear-q->front+MAXSIZE)%MAXSIZE; } int enQueue(SqQueue *q,ElemType e){ if ((q->rear+1)%MAXSIZE==q->front){ return 0; } q->rear = (q->rear+1) % MAXSIZE; q->elem[q->rear]=e; return 1; } int deQueue(SqQueue *q){ if(q->front==q->rear){ return 0; }else{ q->front = (q->front+1)% MAXSIZE; return q->elem[q->front]; } } void ClearQueue(SqQueue *q){ free(q); } int QueueEmpty(SqQueue *q){ return q->front ==q->rear; } main(){ int i=0; SqQueue *q; q=InitQueue(); printf("进队列的顺序为:\n"); for(i;i<10;i++){ printf("%d\t",i+1); if(enQueue(q,i+1)==0){ printf("队满不能进队列!"); } } printf("\n"); printf("队列的长度顺序为:%d\t",QueueLength(q)); printf("\n"); printf("出队的顺序为:\n"); printf("%d\t",deQueue(q)); printf("%d\t",deQueue(q)); printf("%d\t",deQueue(q)); printf("%d\t",deQueue(q)); printf("%d\t",deQueue(q)); printf("%d\t",deQueue(q)); printf("%d\t",deQueue(q)); printf("%d\t",deQueue(q)); printf("%d\t",deQueue(q)); printf("%dyy\t",deQueue(q)); printf("hh%d\t",deQueue(q)); printf("\n"); if(QueueEmpty(q)){ printf("队列已经空\n"); } printf("\n"); printf("释放队列\n"); ClearQueue(q); }
相关文章推荐
- UI:页面传值、单例模式传值、属性传值、NSUserDefaults 数据持久化
- 线程之间的通信
- 开始使用Unix
- 请确保该二进制存储在制定的路径中。。。
- automake连载--Linux下使用autoconfig automake进阶
- [tools]ubuntu1204-64bit tomcat 开机自启动
- 算法中的NP问题
- window环境下的ip网络释放和重新连接
- Web安全之Cookie管理
- codeforces 368B B. Sereja and Suffixes(树状数组)
- HDOJ 4389 X mod f(x)
- HDU 3449 Consumer(依赖背包)
- window.location.href刷新页面
- android activity 后的形式 藏
- FZU 1686 龙之谜 重复覆盖
- juicer
- js正则表达式验证大全(收集)
- iOS应用生命周期(applicationDelegate类)
- Android开源框架分类
- 根据字符串长度计算UILabel的高度