首页 > 编程语言 >C++U4-第08课-队列

C++U4-第08课-队列

时间:2023-12-11 14:58:24浏览次数:36  
标签:return string int U4 08 C++ 队列 110 void

队列:顺序队列

 队列基本操作

 选择题1

 选择题2

 程序阅读题

 

 

 

 

 打疫苗

 

【算法分析】
用数组实现队列,按题意模拟即可。

【参考代码】
#include <iostream>
using namespace std;

string q[1010]; 
int f, r; //f前端,指向队头,r后端,指向队尾的后一个位置 ,初始为0 

void push(string x){  //入队 
    q[r++] = x;
}

void pop(){    //出队 
    f++;
} 

string front(){  //返回队首元素 
    return q[f];
} 

bool empty(){ //队空 
    return f == r;
} 

int main(){
    while(true){
        string s;
        cin >> s;
        if(s[0] == '1'){
            push(s);
        } else if(s == "out"){
            int t;
            cin >> t;
            if(!empty()){
                while(!empty() && t > 0){
                    cout << front() << " ";
                    pop();
                    t--;
                }
            } else cout << "empty";
            cout << endl;
        } else if(s == "end"){
            while(!empty()){
                cout << front() << " ";
                pop();
            }
            break;
        }
    }
    return 0;
}
View Code

 

循环队列

 

 

 

 

 程序阅读题打疫苗2

 

 

 

 

 

 

 阵列数字搜索

 

#include <iostream>
using namespace std;

// 定义节点结构体,包含x和y坐标
struct node {
    int x, y;
};

node q[10005]; // 定义队列q,用于存放节点
int f, r; // 队列的头和尾指针
int n; // 网格大小
bool vis[110][110]; // 记录节点是否被访问过
int Map[110][110]; // 存放网格地图的数组
int dir[4][2] = { -1, 0, 1, 0, 0, -1, 0, 1 }; // 上下左右四个方向的偏移量

void push(node t) {
    q[r].x = t.x;
    q[r++].y = t.y;
}

node front() {
    return q[f];
}

void pop() {
    f++;
}

bool empty() {
    return f == r;
}

int size() {
    return r - f;
}

bool check(int x, int y) {  
    // 越界检查,判断坐标(x, y)是否在合法范围内
    return x >= 1 && y >= 1 && x <= n && y <= n;
}

void bfs(int x, int y) {
    node cur = { x,y };
    push(cur); // 将起点入队
    vis[x][y] = true; // 标记起点为已访问
    while (!empty()) {
        node t = front(); // 取队首元素
        pop();  // 队首元素出队 
        if (t.x == n && t.y == n) return; // 到达终点,结束搜索
        for (int i = 0; i < 4; i++) {
            int nx = t.x + dir[i][0]; // 计算新的x坐标
            int ny = t.y + dir[i][1]; // 计算新的y坐标
            if (check(nx, ny) && !vis[nx][ny]) { // 判断新的坐标是否合法且未被访问过
                cout << Map[nx][ny] << " "; // 输出当前节点的值
                node m = { nx, ny };
                push(m); // 将新的节点入队
                vis[nx][ny] = true; // 标记新的节点为已访问
            }
        }
    }
}

int main() {
    cin >> n; // 输入网格大小
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cin >> Map[i][j]; // 输入每个网格的值
        }
    }
    cout << Map[1][1] << " "; // 输出起点的值
    bfs(1, 1); // 从起点开始进行广度优先搜索
    return 0;
}
View Code

 

代码执行流程

 

 

 本节课作业讲解分析

链接:https://pan.baidu.com/s/1rxmQTgF4PVUQSXwdTdARAQ?pwd=i43w
提取码:i43w

 

标签:return,string,int,U4,08,C++,队列,110,void
From: https://www.cnblogs.com/jayxuan/p/17894397.html

相关文章

  • C++U5-09-二叉树2
    二叉树(二)二叉树遍历是一种重要的操作,它在许多应用场景中被广泛使用。以下是一些常见的应用场景:查找和搜索:二叉树遍历可以用于查找特定元素或者进行搜索操作。通过遍历整棵树,可以找到目标元素并进行相应的处理。例如,在二叉搜索树中查找某个特定值,或者在字典树中搜索以某个前缀......
  • C++U3-第4课-结构体应用
    上节课作业分析讲解:链接:https://pan.baidu.com/s/15b4fJq1Xxd2X6uB9CJuVXw?pwd=r9nt提取码:r9nt结构体应用 sort排序函数回顾 结构体排序结构体排序,排序的时候给cmp函数传递的是新创建的结构体类型,所以函数里形参类型就是结构体的类型 例题1#include<iostream>......
  • C++(std::shared_ptr)
    std::shared_ptr是C++标准库中的一个智能指针类,用于管理动态分配的内存。它提供了一种共享拥有权(sharedownership)的机制,通过引用计数来跟踪指向同一块内存的所有std::shared_ptr实例。当最后一个std::shared_ptr被销毁时,它会自动释放所拥有的内存。基本用法:#include<me......
  • C++中的虚函数和纯虚函数详细讲解
    1.虚函数1.1概念(1)定义一个函数为虚函数,不代表函数为不被实现的函数。(2)定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。1.2简介假设我们有下面的类层次classA{public:virtualvoidfoo(){cout<<"A::foo()iscalled"<<endl;}};c......
  • C++基础 -3- 匿名空间,命名空间跨文件使用
    ———————匿名空间,命名空间跨文件———————匿名空间仅限本文件使用 ......
  • 我的收藏周刊089
    文章分享微软亚洲研究院刘铁岩:对偶学习——探秘人工智能的对称之美相对于对偶学习,网络的封装和解封装也是对偶的,或者叫对称的。数据时代DCN网络架构DCN网络学习。腾讯云正在自研全新高性能传输协议HARP:支持10000+节点大规模组网HARP协议,可以类比iWARP,还可以参考这......
  • Qt/C++音视频开发59-使用mdk-sdk组件/原qtav作者力作/性能凶残/超级跨平台
    一、前言最近一个月一直在研究mdk-sdk音视频组件,这个组件是原qtav作者的最新力作,提供了各种各样的示例demo,不仅限于支持C++,其他各种比如java/flutter/web/android等全部支持,性能上也是杠杠的,目前大概是在V0.23版本,大部分软件发布基本上都是在1.0版本才是比较稳定的,不过目前用下来......
  • #2023-2024-1 20231408《计算机基础与程序设计》第十一周学习总结
    作业信息这个作业属于哪个课程<2023-2024-1-计算机基础与程序设计>这个作业要求在哪里<2023-2024-1计算机基础与程序设计第十一周作业>这个作业的目标<《计算机科学概论》第15,16章,《C语言程序设计》第10章,上周测试题>作业正文https://www.cnblogs.com/jfxyh06......
  • protobuf使用(c++)
    protobuf是什么ptotobuf是谷歌的语言无关、平台无关可扩展的序列化结构数据格式,例如XML,但是更小、更快、更简单。你只需定义一次结构化数据,然后就可以使用特殊生成的源代码轻松地将结构化数据写入和读取到各种数据流,并且夸语言。protobuf怎么用版本及环境protobuf版本:3.21.12......
  • Qt6 c++教程9测试&调试
    9测试&调试调试和测试是软件开发的重要组成部分。在本章中,你将学习如何调试Qt项目、不同的调试技术以及Qt支持的调试器。调试是发现错误或不希望出现的行为的根本原因并加以解决的过程。我们还将讨论使用QtTest框架进行单元测试。QtTest是基于Qt的应用程序和库的单元测试......