文章目录
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)等;其数据结构具体实现可以参考我的数据结构分类文章