顺序队列的基本操作
2014-02-11 21:56
549 查看
#include <stdio.h> #include <stdlib.h> //#include <iostream> #define MAXSIZE 100 #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0 //using namespace std; typedef struct { int data[MAXSIZE]; int front; // 头指针 int rear; //尾指针 }SqQueue; int initQueue(SqQueue &Q);//初始化队列 int ClearQueue(SqQueue &Q);//清空队列 int QueueEmpty(SqQueue Q);//判断队空 int QueueLength(SqQueue Q);//取队列长度 int GetheadQueue(SqQueue Q,int &e);//取队列对头元素 int InQueue(SqQueue &Q,int x);//入队操作 int DeQueue(SqQueue &Q);//出队操作 int QueueTraverse(SqQueue Q);//遍历队列 int main() { printf("Hello World!\n"); SqQueue Q; int m; int i,leng; int kk,flag; initQueue(Q); printf("入队顺序:\n"); for(i=1;i<=10;i++) { InQueue(Q,i);//入队 printf("%d ",i); } printf("\n"); flag=QueueEmpty(Q); leng=QueueLength(Q); if(flag==1) printf("队列空,队列长度为: 0\n"); else printf("队列不空,队列长度为:%d\n",leng); QueueTraverse(Q);//遍历队列 flag=QueueEmpty(Q); leng=QueueLength(Q); if(flag==1) printf("队列空,队列长度为: 0\n"); else printf("队列不空,队列长度为:%d\n",leng); GetheadQueue(Q,m); printf("队列顶部元素为:%d\n",m); for(i=0;i<10;i++) { kk=DeQueue(Q); printf("%d ",kk);//出队 } ClearQueue(Q); printf("\n"); flag=QueueEmpty(Q); leng=QueueLength(Q); if(flag==1) printf("队列空,队列长度为: 0\n"); else printf("队列不空,队列长度为:%d\n",leng); return 0; } int initQueue(SqQueue &Q)//初始化队列 { Q.front=0; Q.rear=0; return OK; } int ClearQueue(SqQueue &Q)//清空队列 { Q.front=Q.rear=0; return OK; } int QueueEmpty(SqQueue Q)//判断队空 { if(Q.front==Q.rear) return TRUE; else return FALSE; } int QueueLength(SqQueue Q)//取队列长度 { return(Q.rear-Q.front+MAXSIZE)%MAXSIZE; } int GetheadQueue(SqQueue Q,int &e)//取队列对头元素 { if(Q.front==Q.rear) return ERROR; e=Q.data[Q.front]; return OK; } int InQueue(SqQueue &Q,int x)//入队操作 { if(Q.front==MAXSIZE) printf("溢出!\n"); else { Q.data[Q.rear]=x; (Q.rear)++; } return 1; } int DeQueue(SqQueue &Q)//出队操作 { int x; if(Q.front==Q.rear) printf("下溢出!\n"); else { x=Q.data[Q.front]; (Q.front)++; //front指针后移 } return x; } int QueueTraverse(SqQueue Q)//遍历队列 { int i; i=Q.front; while(i!=Q.rear) { printf("%d ",Q.data[i]); i=(i+1)%MAXSIZE; } printf("\n"); return OK; }
相关文章推荐
- OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量
- javascript实现图片滚动
- rabbitmq第三篇:rabbitmq使用及参数设置
- java笔记(5)--反射
- -g vs -rdynamic
- C# Winform应用程序占用内存较大解决方法整理
- Java Socket常见异常处理
- Java Socket常见异常处理
- 要找个像素尺真不容易
- Flip Game--POJ 1753
- 小白学习node.js的心得
- 开始搞个android定位demo(2)高德
- css selector
- hibernate.current_session_context_class
- Python菜鸟学习第四课
- 1002. Highways
- MFC 网络编程
- linux下的Source命令的基本功能
- 1001. Robot
- 十分钟了解MongoDB