資料結構迴圈佇列
阿新 • • 發佈:2018-12-17
程式碼
#include<bits/stdc++.h> using namespace std; #define OK true #define ERROR false const int MAXSIZE=100; typedef struct{ int *base; int front; int rear; }SqQueue; bool InitQueue(SqQueue *Q){ Q->base=(int *)malloc(MAXSIZE*sizeof(int)); if(!Q->base) exit(OVERFLOW); Q->front=Q->rear=0; return OK; } int QLength(SqQueue Q){ return (Q.rear-Q.front+MAXSIZE)%MAXSIZE; } bool EnQueue(SqQueue *Q,int e){ if((Q->rear+1)%MAXSIZE==Q->front) return ERROR; Q->base[Q->rear]=e; Q->rear=(Q->rear+1)%MAXSIZE; return OK; } bool DeQueue(SqQueue *Q,int *e){ if(Q->front==Q->rear) return ERROR; *e=Q->base[Q->front]; Q->front=(Q->front+1)%MAXSIZE; return OK; } bool Print(SqQueue Q){ for(int i=Q.front;i<Q.rear;++i) cout<<Q.base[i]<<' '; return 1; } int main(){ SqQueue queue; int elem,n; InitQueue(&queue); printf("輸入佇列元素的個數:\n"); cin>>n; cout<<endl; printf("輸入佇列%d個元素:\n",n); for(int i=1;i<=n;i++) { cin>>elem; EnQueue(&queue, elem); } printf("輸出佇列元素:\n"); Print(queue); printf("\n輸入要出隊的佇列元素個數:\n"); int i; scanf("%d", &i); while(i != 0) { DeQueue(&queue, &elem); i--; } printf("輸出剩下的元素:\n"); Print(queue); }