数据结构学习第九课(顺序队列)

2,顺序队列
2.1链表基本框架
#define INIT_QUE_SIZE 8
typedef int Data;
typedef struct _SeqQueue
{
	Data* base;
	int capacity;
	int size;
	int front;//队头
	int rear;//队尾
}SeqQueue;
2.2创建一个队列
//创建一个队列
SeqQueue* createSeqQueue()
{
	SeqQueue* que = calloc(1, sizeof(SeqQueue));
	assert(que != NULL);
	que->base = calloc(INIT_QUE_SIZE, sizeof(que));
	assert(que->base != NULL);
	que->capacity = INIT_QUE_SIZE;
	que->size = 0;
	que->front = que->rear = 0;
	return que;
}
2.3入队–队尾
//入队--队尾 
void push(SeqQueue* que, Data val)
{
	if (que->size==que->capacity)
	{
		printf("队列满了");
		return;
	}
	que->base[que->rear++] = val;
	que->rear = (que->rear + 1) % que->capacity;//形成环形队列
	que->size++;
}
2.4出队–队头
//出队--队头
void pop(SeqQueue* que)
{
	assert(!empty(que));
	que->front = (que->front + 1) % que->capacity;//形
	que->size--;
}
2.5获取队头元素
//获取队头元素
Data front(SeqQueue* que)
{
	assert(!empty(que));
	return que->base[que->front];
}
2.6获取队尾元素
//获取队尾元素
Data back(SeqQueue* que)
{
	assert(!empty(que));
	return que->base[que->rear-1];
}
2.7获取大小
//获取大小
int size(SeqQueue* que)
{
	return que->size;
}
2.8判空
//判空
#include<stdbool.h>
bool empty(SeqQueue* que)
{
	return que->size==0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值