대기 열의 실현 - C 언어

// C  ,     

#include
#include

#define QUEUE_SIZE 	(50)	//        

typedef struct SeqQueue{
	int data[QUEUE_SIZE];	//     
	int front;		//     
	int rear;		//     
	int count;		//          
}Queue;

Queue *InitQueue(){					//      
	Queue *q = (Queue*)malloc(sizeof(Queue));
	if(q == NULL){
		printf("malloc failed!
"); exit(-1); } q->front = 0; q->rear = 0; q->count = 0; return q; } int IsFull(Queue* q){ return (q->count == QUEUE_SIZE); } int IsEmpty(Queue* q){ return (q->count == 0); } void Enqueue(Queue* q, int n){ // , if(IsFull(q)){ printf("Already full, n = %d
", n); return; } q->data[q->rear] = n; // q->rear = (q->rear+1) % QUEUE_SIZE; // 。 q->count++; } int Dequeue(Queue* q){ // , if(IsEmpty(q)){ return 0; } int tmp = q->data[q->front]; q->front = (q->front+1) % QUEUE_SIZE; // , q->count--; return tmp; } int main(void){ Queue* q = InitQueue(); int i; for(i = 0; i < 50; i++){ Enqueue(q, i); } while(!IsEmpty(q)){ int data = Dequeue(q); printf("%d-->",data); } free(q); return 0; }

좋은 웹페이지 즐겨찾기