数据结构_顺序队列

1 队列

1.1 队列的定义

1) 队列简称队,它是一种操作受限的线性表,其限制为在标的一段进行插入,而在包的另一端进行删除。把进行插入的一端称为队尾(rear),把进行删除的一端称作队头队首(front)。向队列中插入新元素称为进队入队,新的元素进队后就成为新的队尾元素;从队列中删除元素称为出队离队,元素出队后,其直接后继元素就成为队首元素。

2)由于队列的插入和删除操作分别在各自的一端进行的,每个元素必然按照进队的次序出队,所以又把队列称为先进先出表

2 队列的顺序存储结构及其基本运算的实现

队列的顺序储存结构需要使用一个数组和两个整数型变量来实现。利用数组顺序储存队列中所有元素,利用两个整型变量分别储存队首元素和队尾元素下表位置,分别称它为队首指针和队尾指针。
假设队列的所有元素不超过整数 MaxSize,所有元素都有具有同一数据类ElemType
,则顺序队列类型SqQueue定义如下:

typedef struct 
{
	ElemType data[MaxSize];  //存放队中元素
	int front;                //队头指针
	int rear;                //队尾指针
}SqQueue;                    //定义顺序队类型

(1)初始化队列 InitQueue(q)。
构造一个空队列q。将front和rear指针均设置为初始状态即-1。

void InitQueue(SqQueue * &q)
{
	q=(SqQueue*)malloc(sizeof(SqQueue));
	q->front = q->rear = -1;
}

(2)销毁队列 DestoryQueue(q)。
释放队列q占用的储存空间。

void DestoryQueue(SqQueue * &q)
{
	free(q);
}

(3)判断队列是否为空 QueueEmpty(q)。
若队列q满足q->front=q->rear条件,则返回true;否则返回false。

bool QueueEmpty(SqQueue * &q)
{
	return (q->from == q->rear);
}

(4)进队列 enQueue(q,e)。
在栈不满的情况下,现将队尾指针rear自增1,然后将元素添加到该位置。

bool enQueue(SqQueue * &q,ElemType e)
{
	if(q->rear == MaxSize-1)
		return false;
	q->rear ++;
	q->data[q->rear]=e;
	return true;
}

(5)出队列 deQueue(s,e)。

bool deQueue(SqQueue * &q,ElemType &e)
{
	if(q->front == q->rear)
		return false;
	q->front ++;
	e=q->data[q->front];
	return true;
}

例题:

#include<stdio.h>
#include<Windows.h>

typedef int ElemType;
#define MaxSize 5


typedef struct 
{
	ElemType data[MaxSize];  //存放队中元素
	int front;                //队头指针
	int rear;                //队尾指针
}SqQueue;                    //定义顺序队类型

void InitQueue(SqQueue * &q)
{
	q=(SqQueue*)malloc(sizeof(SqQueue));
	q->front = q->rear = -1;
}

void DestoryQueue(SqQueue * &q)
{
	free(q);
}

bool QueueEmpty(SqQueue * &q)
{
	return (q->front == q->rear);
}

bool enQueue(SqQueue * &q,ElemType e)//进队列
{
	if(q->rear == MaxSize-1)
		return false;
	q->rear ++;
	q->data[q->rear]=e;
	return true;
}
bool deQueue(SqQueue * &q,ElemType &e)
{
	if(q->front == q->rear)
		return false;
	q->front ++;
	e=q->data[q->front];
	return true;
}

int main()
{
	int a,i,e;
	SqQueue *st;
	InitQueue(st);
	for(i=0;i<MaxSize;i++)
	{
		scanf("%d",&a);
		enQueue(st,a);
	}
	for(i=0;i<MaxSize;i++)
	{
		deQueue(st,e);
		printf("%d  ",e);
	}
	system("pause");
	return 0;
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值