数据结构之队列

队列
    定义:
        一种可以实现先进先出的存储结构

    分类:
        静态队列
        链式队列

循环队列程序示例
队列算法:
    入队
    出队

#include<stdio.h> 
#include<malloc.h> 

typedef struct Queue 
{ 
	int *pBase; int front; 
	int rear; 
}QUEUE; 

void init(QUEUE *); 
bool en_queue(QUEUE *,int);  // 入队
void traverse_queue(QUEUE *); 
bool full_queue(QUEUE *); 
bool out_queue(QUEUE *,int *); 
bool empty_queue(QUEUE *); 

int main(void) 
{ 
	QUEUE Q; 
	int val; 
	init(&Q); 
	en_queue(&Q,1); 
	en_queue(&Q,2); 
	en_queue(&Q,3); 
	en_queue(&Q,4); 
	en_queue(&Q,5); 
	en_queue(&Q,6); 
	en_queue(&Q,7); 
	traverse_queue(&Q); 

	if(out_queue(&Q,&val)) 
	{ 
		printf(" 出队成功,队列出队的元素是 %d\n",val); 
	} 
	else 
	{ 
		printf(" 出队失败! \n"); 
	} 

	traverse_queue(&Q); 
	
	return 0; 
} 

void init(QUEUE *pQ) 
{ 
	pQ->pBase=(int *)malloc(sizeof(int)*6);//6 个元素
	pQ->front=0; pQ->rear=0; 
} 

bool full_queue(QUEUE * pQ) 
{ 
	if((pQ->rear+1)%6==pQ->front) 
		return true; 
	else 
		return false; 
} 

bool en_queue(QUEUE * pQ,int val) 
{ 
	if(full_queue(pQ)) 
	{ 
		return false; 
	} 
	else 
	{ 
		pQ->pBase[pQ->rear]=val; 
		pQ->rear=(pQ->rear+1)%6; 

		return true; 
	} 
} 

void traverse_queue(QUEUE * pQ) 
{ 
	int i=pQ->front; 

	while(i!=pQ->rear) 
	{ 
		printf("%d ",pQ->pBase[i]); 
		i=(i+1)%6; 
	} 
	printf("\n"); 
} 

bool empty_queue(QUEUE * pQ) 
{ 
	if(pQ->front==pQ->rear) 
		return true; 
	else 
		return false; 
} 

bool out_queue(QUEUE * pQ,int * pVal) 
{ 
	if(empty_queue(pQ)) 
	{ 
		return false; 
	} 
	else 
	{ 
		*pVal=pQ->pBase[pQ->front]; 
		pQ->front=(pQ->front+1)%6; 
		return true; 
	} 
} 

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值