双端队列部分操作(剩下部分待补)

/* 双端队列操作 */
#define MAX_QUEUE_SIZE 100
#define TRUE 1
#define FALSE 0
#define IS_QUEUE_EMPTY(front, rear) (front == rear ? TRUE: FALSE)
#define IS_QUEUE_FULL(rear) ((rear == MAX_QUEUE_SIZE - 1 && front == 0) ? TRUE: FALSE))
int front = MAX_QUEUE_SIZE / 2, rear = MAX_QUEUE_SIZE / 2;

typedef struct info{
	int key;
	/* other fields */
	}element;
element queue[MAX_QUEUE_SIZE];

void add_double_port_queue(int *front, int *rear, element item)
{
	*rear = (*rear + 1) % MAX_QUEUE_SIZE;
	if(IS_QUEUE_FULL(front, *rear)){
		queue_full(*rear);
		return ;
	}
	if(*rear != MAX_QUEUE_SIZE - 1){
		queue[++*rear] = item;
		return ;
	}
	if(*front != 0){
		queue[--*front] = item;
		return ;
	}
}
void queue_full(void)
{
	printf("Full.\n");
	/* other operations */
	return ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值