Contest100000606 - 《算法笔记》7.2小节——数据结构专题(1)->队列的应用

Contest100000606 - 《算法笔记》7.2小节——数据结构专题(1)->队列的应用

7.2 队列的应用

队列是一种先进先出的数据结构,区别于栈
在这里插入图片描述
队列总是在队尾加入元素,而从队首移除元素,一般队首指针front指向队首元素的前一个位置,队尾指针rear指向队尾元素

常用操作

在这里插入图片描述###(1)清空(clear)
在这里插入图片描述
###(2)获取栈内元素个数(size)
###(3)判空(empty)
###(4)入队(push)
###(5)出队(pop)
###(6)取队首元素(get_front)
###(7)取队尾元素(get_rear)
在这里插入图片描述

队列的函数代码整理

详细可见我的博客:https://blog.csdn.net/qq_34767784/article/details/93653126

//队列的函数代码整理
#include <iostream>
#include <cstdio>
#include <queue>
#define MAXSIZE 100

typedef int elemtype;
typedef struct{
	elemtype data[MAXSIZE];
	elemtype front,rear;
	int len;
}SqQueue;
void clear(SqQueue &Q){
	Q.front = Q.rear = -1;
}
int size(){
	return rear - front;
}
bool empty(){
	if(front == rear)	return true;
	else	return false;
}
void push(int x){
	q[++rear] = x;
}
void pop(){
	front++;
}
int get_front(){
	return q[front+1];
}
int get_rear(){
	return q[rear];
}
int main() {
	
	return 0;
}

注意事项

在这里插入图片描述

Codeup习题

Contest100000606 - 《算法笔记》7.2小节——数据结构专题(1)->队列的应用链接: http://codeup.cn/contest.php?cid=100000606

问题A:C语言-数字交换

链接: http://codeup.cn/problem.php?cid=100000605&pid=0

//问题A:C语言-数字交换
//1863-ProblemA-C语言-数字交换
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;

int main(){
	int num[11]={0};
	while(cin >> num[0]){
		for(int i=1;i<10;i++){
			cin>>num[i];
		}
		//max可能在a[0]位置,此时调换最小值后下标不准确,故分开查找调换
		//若min、max在同一个for循环,会出现50%的错误,
		//可能是两者交叉对彼此产生了影响,所以应该分开看 
		int min=0,max=0;
		for(int i=1;i<10;i++){
			if(num[min] > num[i]){
				min = i;
			}
		}
		//将其中最小的数与第一个数对换
		swap(num[0],num[min]);
		for(int i=1;i<10;i++){
			if(num[max] < num[i]){
				max = i;
			}
		}
		//把最大的数与最后一个数对换 
		swap(num[max],num[9]);
		for(int i=0;i<10;i++){
			cout<<num[i]<<" ";
		}
		cout<<endl;	
	}
	return 0;
}

	

队列小结

队列是一种先进先出的数据结构,区别于栈;队列总是在队尾加入元素,而从队首移除元素,一般队首指针front指向队首元素的前一个位置,队尾指针rear指向队尾元素;常用操作有清空(clear)、获取栈内元素个数(size)、判空(empty)、入队(push)、出队(pop)、取队首元素(get_front)、取队尾元素(get_rear)等;其数据结构具体实现可以参考我的数据结构分类文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李霁明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值