循环队列

# include <stdio.h>
# include <malloc.h>
# define len 6												//队列长度 

typedef struct QUENE										
{
	int * pbase;												//数据域 
	int front;												//头指针 
	int rear;												//尾指针 
}Quene,* quene;

void init_quene(quene que);									//建立队列 
bool empty_quene(quene que);								//判断是否为空 
bool full_quene(quene que);									//判断释放满溢 
bool on_quene(quene que,int val);							//入队 
bool out_quene(quene que,int *val);							//出队 
void traverse_quene(quene que);								//遍历输出 

int main (void)
{
	int val; 
	quene que;
	que = (quene)malloc(sizeof(Quene));						//为指针变量que分配空间 
	init_quene(que);
	on_quene(que,1);
	on_quene(que,2);
	on_quene(que,3);
	on_quene(que,4);
	traverse_quene(que);
	out_quene(que,&val);
	printf ("%d\n",val);
	traverse_quene(que);
	printf ("%d\n",val);
	
	return 0;
}

void init_quene(quene que)
{
	que->pbase = (int *)malloc(sizeof(int)*len);				//为循环队列分配空间 
	que->front = 0;
	que->rear = 0;
}

bool empty_quene(quene que)
{
	if (que->front == que->rear)
	return true;
	else
	return false;
}

bool full_quene(quene que)
{
	if (que->front == (que->rear+1)%len)
	return true;
	else
	return false;
}

bool on_quene(quene que,int val)
{
	if (full_quene(que))
	return false;
	else
	{
		que->pbase[que->rear] = val;
		que->rear = (que->rear+1)%len;					//尾指针指向下移位置 
		return true;
	}
}

bool out_quene(quene que,int *val)
{
	if (empty_quene(que))
	return false;
	else
	{
		*val = que->pbase[que->front];
		que->front = (que->front+1)%len;				//头指针指向下一位置 
		return true;
	}
}

void traverse_quene(quene que)
{
	int i;
	i = que->front;
	while(i != que->rear)
	{
		printf ("%d ",que->pbase[i]);					//输出队列 
		i = (i+1)%len;
	}
	printf ("\n");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值