用C++实现队列的程序代码

实现队列的程序代码主要涉及以下内容:数据结构、队列的操作、C++语法等。下面我们一步步来进行讲解。

数据结构

队列可以看成是一种特殊的线性表,它具有先进先出(FIFO)的特点,即先进队列的元素将先输出,后进队列的元素将后输出。

队列通常包含以下几个基本操作:入队、出队、判空和求队列长度等。入队就是将新元素插入到队列的末尾,出队就是将队头元素删除并返回,判空就是检查队列是否为空,求队列长度就是统计当前队列中元素的数量。

在C++中,可以使用STL库提供的queue模板类来实现队列。queue模板类已经封装好了队列的基本操作,因此我们只需要了解如何使用queue模板类就能够实现队列。

队列的操作

首先需要在程序中引入queue头文件:

#include <queue>

然后定义一个队列:

queue<int> q;

上述代码定义了一个名为q的队列,元素的类型为int。

接下来介绍几个队列的常用操作:

入队

使用push函数可以将新元素插入到队列的末尾:

int num = 3;
q.push(num);

上述代码将数字3插入到了队列的末尾。

出队

使用front函数可以获取队头元素,使用pop函数可以将队头元素删除:

int front_element = q.front(); // 获取队头元素
q.pop(); // 删除队头元素

上述代码获取了队头元素并将其删除。

判空

使用empty函数可以判断队列是否为空:

if (q.empty()) {
    cout << "队列为空!" << endl;
}

上述代码判断了队列是否为空。

求队列长度

使用size函数可以获取队列中元素的数量:

int queue_size = q.size(); // 获取队列中元素的数量

上述代码获取了队列中元素的数量。

除了以上几个操作,queue模板类还提供了其他常用的操作,如清空队列、遍历队列等。

示例说明

下面通过两个示例来说明如何使用C++实现队列的程序代码。

示例一:基本的队列操作

下面的代码演示了在队列中插入元素、删除元素、判断队列是否为空以及获取队列长度:

#include <iostream>
#include <queue>

using namespace std;

int main() {
    queue<int> q;

    // 往队列中插入元素
    q.push(2);
    q.push(3);
    q.push(5);
    q.push(7);
    q.push(11);

    // 输出队列中的元素
    while (!q.empty()) {
        cout << q.front() << " ";
        q.pop();
    }
    cout << endl;

    // 判断队列是否为空
    if (q.empty()) {
        cout << "队列已经为空!" << endl;
    }

    // 获取队列中元素的个数
    int num_elem = q.size();
    cout << "队列中有" << num_elem << "个元素。" << endl;

    return 0;
}

运行结果:

2 3 5 7 11
队列已经为空!
队列中有0个元素。

示例二:使用队列实现广度优先搜索

下面的代码演示了如何使用队列实现广度优先搜索算法:

#include <iostream>
#include <queue>
#include <vector>

using namespace std;

void bfs(vector<int> graph[], int start_node);

int main() {
    // 图中的边
    vector<int> graph[6];
    graph[1].push_back(2);
    graph[1].push_back(3);
    graph[2].push_back(4);
    graph[2].push_back(5);
    graph[3].push_back(5);
    graph[4].push_back(6);
    graph[5].push_back(6);

    // 广度优先搜索
    bfs(graph, 1);

    return 0;
}

void bfs(vector<int> graph[], int start_node) {
    bool visited[6] = {false};
    queue<int> q;

    // 将起始节点加入队列
    q.push(start_node);
    visited[start_node] = true;

    while (!q.empty()) {
        int current_node = q.front();
        cout << current_node << " ";
        q.pop();

        for (int i = 0; i < graph[current_node].size(); i++) {
            int neighbor_node = graph[current_node][i];
            if (!visited[neighbor_node]) {
                q.push(neighbor_node);
                visited[neighbor_node] = true;
            }
        }
    }
    cout << endl;
}

运行结果:

1 2 3 4 5 6

上述代码实现了如何使用队列实现广度优先搜索算法。其中,vector表示无向图,bfs函数中实现了广度优先搜索的算法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用C++实现队列的程序代码 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 基于一致性hash算法 C++语言的实现详解

    下面是 “基于一致性Hash算法C++语言的实现详解” 的攻略。 简介 一致性Hash算法是分布式系统中常用的一种负载均衡算法。C++ 语言是一种高效的编程语言,有着广泛的应用。本篇攻略将通过分析一致性Hash算法的实现,详细讲解如何在C++语言中实现这一算法,并给出两个示例说明。 一致性Hash算法的实现 步骤一:将服务器节点映射到一个环上 一致性Hash…

    C 2023年5月22日
    00
  • 使用C++实现全排列算法的方法详解

    下面是“使用C++实现全排列算法的方法详解”的完整攻略。 一、概述 全排列算法,是指对给定的一组数,求出它们的所有排列组合,例如给定[1,2,3],则所有排列组合为[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]。在程序开发中,全排列算法被广泛应用于排序、组合、递归等领域。 二、算法思路 首先,我们需要明确一个概…

    C 2023年5月22日
    00
  • 深入了解C语言中的const和指针

    深入了解C语言中的const和指针 概述 在C语言中,const和指针是两个比较常用的概念。本篇攻略将会深入讲解const和指针的相关知识,希望读者可以从中收获一些有用的知识。 const const 的定义 const是C语言中一个关键字,用来修饰一个变量,表示该变量是不可修改的。常见的用法如下: const int n = 10; 上述代码中,n是一个整…

    C 2023年5月23日
    00
  • loadavg数据异常引发问题起源分析

    当我们使用Linux系统时,经常会使用命令top查看系统状态。其中有一项很重要的指标就是load average(平均负载)。load average是指单位时间内系统运行队列中的平均进程数,是衡量系统负荷程度的最基本指标之一。 但是在实际应用中,常常会遇到load average数据异常的问题。这会导致系统运行缓慢,处理能力减弱,甚至会导致系统崩溃。那么如…

    C 2023年5月22日
    00
  • Vue SSR 即时编译技术的实现

    Vue SSR即时编译技术指的是在服务端,即时将Vue组件转换为HTML字符串的技术。下面是详细的实现攻略: 前置条件 首先需要确保你已经熟练掌握了Vue的基础知识,同时也要了解Vue SSR的原理和实现方式,以及Node.js相关的知识。 实现步骤 步骤一:安装依赖 首先,在项目中安装必要依赖: yarn add vue vue-server-render…

    C 2023年5月23日
    00
  • C++11中std::thread线程实现暂停(挂起)功能

    要实现线程的暂停或挂起功能,可以利用C++11中提供的条件变量condition_variable。下面是具体的步骤: 首先定义一个互斥锁mutex和条件变量condition_variable,用来实现多个线程之间的互斥和同步操作: std::mutex mtx; std::condition_variable cv; 然后在线程函数中加入while循环,…

    C 2023年5月22日
    00
  • 如何理解C++指针常量和常量指针

    下面给你详细讲解如何理解C++指针常量和常量指针。 1. 指针常量 1.1 概念介绍 指针常量是指一个指针被定义为常量(值不能被改变),而指针所指向的变量的值可以变化。在定义指针常量时,必须把指针初始化为某个地址。 1.2 示例说明 以下是一个指针常量的示例: #include <iostream> using namespace std; in…

    C 2023年5月23日
    00
  • C++ STL中的常用遍历算法分享

    C++ STL中的常用遍历算法分享 在 C++ STL 中,有很多方便实用的遍历算法,可以帮助程序员更方便地进行数据的遍历和处理。本文将分享 C++ STL 常用遍历算法的完整攻略。 算法介绍 常用的遍历算法有以下几种: for_each find find_if count accumulate 以上算法都位于 algorithm 头文件中,因此我们需要先…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部