队列的实现——C语言

// C语言,队列的实现

#include<stdio.h>
#include<stdlib.h>

#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!\n");
		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", 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;	
} 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值