#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! "); SqQueue Q; int m; int i,leng; int kk,flag; initQueue(Q); printf("入队顺序: "); for(i=1;i<=10;i++) { InQueue(Q,i);//入队 printf("%d ",i); } printf(" "); flag=QueueEmpty(Q); leng=QueueLength(Q); if(flag==1) printf("队列空,队列长度为: 0 "); else printf("队列不空,队列长度为:%d ",leng); QueueTraverse(Q);//遍历队列 flag=QueueEmpty(Q); leng=QueueLength(Q); if(flag==1) printf("队列空,队列长度为: 0 "); else printf("队列不空,队列长度为:%d ",leng); GetheadQueue(Q,m); printf("队列顶部元素为:%d ",m); for(i=0;i<10;i++) { kk=DeQueue(Q); printf("%d ",kk);//出队 } ClearQueue(Q); printf(" "); flag=QueueEmpty(Q); leng=QueueLength(Q); if(flag==1) printf("队列空,队列长度为: 0 "); else printf("队列不空,队列长度为:%d ",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("溢出! "); else { Q.data[Q.rear]=x; (Q.rear)++; } return 1; } int DeQueue(SqQueue &Q)//出队操作 { int x; if(Q.front==Q.rear) printf("下溢出! "); 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(" "); return OK; }