不知道有没有用,反正记录下来
#ifndef _Queue_H
#define _Queue_H
struct QueueRecord;
typedef struct QueueRecord * Queue;
typedef int Item;
int isFull(Queue Q);
int isEmpty(Queue Q);
Queue initial(int maxEle);
void enqueue(Item item,Queue Q);
void dequeue(Queue Q);
void printQueue(Queue Q);
#endif
struct QueueRecord{
int size;
int capacity;
int front;
int rear;
Item *array;
};
#include"queue.h"
#include<stdio.h>
#include<stdlib.h>
#define MIN 10
int isFull(Queue Q){
return Q->size==Q->capacity;
}
int isEmpty(Queue Q){
return Q->size==0;
}
Queue initial(int maxEle){
if(maxEle < MIN){
puts("too small");
exit(1);
}
Queue Q;
Q=malloc(sizeof(struct QueueRecord));
if(Q==NULL){
puts("queue arrange fail");
exit(1);
}
Q->size=0;
Q->capacity=maxEle;
Q->front=1;
Q->rear=0;
Q->array=malloc(sizeof(Item)*Q->capacity);
if(Q->array==NULL){
puts("array arrange fail");
free(Q);
exit(1);
}
return Q;
}
void enqueue(Item item,Queue Q){
if(!isFull(Q)){
if(Q->rear+1==Q->capacity)
Q->rear=-1;
Q->array[++(Q->rear)]=item;
Q->size++;
}
}
void dequeue(Queue Q){
if(!isEmpty(Q)){
if(Q->front+1==Q->capacity)
Q->front=-1;
Q->size--;
Q->front++;
}
}
void printQueue(Queue Q){
int i=Q->front;
while(i!=Q->rear){
printf("%d\t",Q->array[i]);
if(i+1==Q->capacity)
i=-1;
i++;
}
printf("%d\t",Q->array[i]);
}
#include"queue.h"
#include<stdlib.h>
#include<stdio.h>
int main(){
Queue Q=initial(20);
enqueue(1,Q);
enqueue(4,Q);
enqueue(42,Q);
enqueue(14,Q);
enqueue(134,Q);
enqueue(114,Q);
printQueue(Q);
printf("\n");
dequeue(Q);
printQueue(Q);
}