标签:max while void ini define ret 结束 链队列 指针
///当不确定队列的长度时,最好选择链队列 #include<bits/stdc++.h> #define OK 1; #define ERROR 0; #define MAXQSIZE 100 ///最大队列长度 typedef int Status; typedef int ElemType; typedef struct { ElemType *base; ///动态分配存储空间,分配出来的即数组空间 int front; int rear; ///注意:front 和 rear 只是指针,指向下标 }SqQueue; ///初始化 Status Init(SqQueue &Q) { Q.base = (ElemType*)malloc(MAXQSIZE*sizeof(ElemType)); if(!Q.base) exit(1); Q.front=Q.rear=0; return OK; } ///判断队列是否为空 bool EmptyQueue(SqQueue Q) { if(Q.front==Q.rear) return true; else return false; } ///求队列长度 int QueueLength(SqQueue Q) { ///因为rear 可能比 front 小 int len = (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE; return len; } ///取队头元素 int GetHead(SqQueue Q,ElemType &e) { if(Q.front==Q.rear) { printf("队列为空,不存在队头元素!\n"); return ERROR; } e = Q.base[Q.front]; return e; } ///入队 Status Push(SqQueue &Q,ElemType e) { if((Q.rear+1)%MAXQSIZE==Q.front) ///队满 { return ERROR; } else { Q.base[Q.rear]=e; Q.rear=(Q.rear+1)%MAXQSIZE; return OK; } } ///出队 int Pop(SqQueue &Q) { if(Q.front==Q.rear) { printf("队列为空,无元素可出队!\n"); return ERROR; } else { ElemType e=Q.base[Q.front]; Q.front=(Q.front+1)%MAXQSIZE; return e; } } ///遍历队内元素 void Print(SqQueue Q) { while(Q.front!=Q.rear) { ElemType e; printf("%d",GetHead(Q,e)); if(Q.front != Q.rear -1) printf("--"); Q.front=(Q.front+1)%MAXQSIZE; } printf("\n"); } int main() { int n; SqQueue Q; Init(Q); ElemType e; printf("请输入入栈元素(以0为结束标志):"); while(~scanf("%d",&n)) { if(n == 0) break; Push(Q,n); } if(EmptyQueue(Q)) printf("Yes , kong\n"); else printf("No kong!\n"); printf("队列的长度:%d\n",QueueLength(Q)); printf("队内元素:"); Print(Q); printf("------------------------------\n"); printf("队列的队首元素:%d\n",GetHead(Q,e)); printf("------------------------------\n"); printf("出队的元素:%d\n",Pop(Q)); printf("------------------------------\n"); printf("队列的队首元素:%d\n",GetHead(Q,e)); printf("------------------------------\n"); printf("队列的长度:%d\n",QueueLength(Q)); printf("队内元素:"); Print(Q); printf("------------------------------\n"); return 0; } /* 1 2 3 4 5 0 */
标签:max while void ini define ret 结束 链队列 指针
原文地址:http://www.cnblogs.com/hhkobeww/p/7898796.html