队列的创建,增加,删除,判断空满
#include#include #define ERROR -1 #define N 100 using namespace std; struct Queue{ int *data; int front,rear; int MaxSize; }; struct BinTree{ int data; struct BinTree *left; struct BinTree *right; }; struct Queue *CreateQueue(int Maxsize) { struct Queue *Q = (struct Queue *)malloc(sizeof(struct Queue)); Q->data = (int *)malloc(sizeof(int)); Q->front = Q->rear = 0; Q->MaxSize = Maxsize; return Q; } bool Isfull(struct Queue *Q) { return ((Q->rear+1) % Q->MaxSize == Q->front); } bool AddQ(struct Queue *Q,int x) { if(Isfull(Q)) { cout << "队列已满" << endl; return false; } else { Q->rear = (Q->rear+1) % Q->MaxSize; Q->data[Q->rear] = x; return true; } } bool IsEmpty(struct Queue *Q) { return (Q->front == Q->rear); } int DeleteQ(struct Queue *Q) { if(IsEmpty(Q)) { cout << "队列为空" << endl; return ERROR; } else { Q->front = (Q->front+1) % Q->MaxSize; return Q->data[Q->front]; } } int main() { int n,x; struct Queue *Q = CreateQueue(N); cout << "请输入数据个数"; cin >> n; while(n--) { cin >> x; AddQ(Q,x); } //cout << Q->front << " " << Q->rear << endl; for(int i = Q->front;i != Q->rear+1;i = (i+1)%Q->MaxSize) { cout << Q->data[i] << " "; } return 0; }



