隊列——queue的用法(及洛谷B3616)

来源:https://www.cnblogs.com/jsyczzws/archive/2023/02/21/17142626.html
-Advertisement-
Play Games

隊列的概念 在說隊列之前,先回憶一下棧是什麼,我們一般說棧是一個先進後出的數據結構,而隊列就是先進先出的數據結構。 隊列是定在表的一端進行插入,表的另一端進行刪除。 通常,我們稱進數據的一端為隊尾,出數據的一端為隊首(這邊需要註意,經常會記反起碼我是這樣的),數據元素進隊列的過程稱為入隊,出隊列的過 ...


隊列的概念

  在說隊列之前,先回憶一下棧是什麼,我們一般說棧是一個先進後出的數據結構,而隊列就是先進先出的數據結構。

  隊列是定在表的一端進行插入,表的另一端進行刪除。

  通常,我們稱進數據的一端為隊尾,出數據的一端為隊首(這邊需要註意,經常會記反起碼我是這樣的),數據元素進隊列的過程稱為入隊,出隊列的過程稱為出隊。

  隊列存儲的方式主要分為兩種:

    1.順序隊列(集中存儲)      2.鏈隊列(分散存儲)

  兩者的區別主要就是順序表和鏈表的區別。

隊列的用法

  和棧一樣,隊列同樣可以使用STL來操作。

  隊列的頭文件是:

1 #include<queue> //當然萬能頭中也包括此頭文件

  有以下幾種操作方式:

1 queue<int> q; //建立一個隊列q
2 q.push(a); //將元素a插入到隊列q的末尾
3 q.pop(); //刪除q的隊首元素
4 q.front(); //查詢q的隊首元素(這裡要註意它和棧略有不同,棧中用的是top函數)
5 q.back(); //查詢q的隊尾元素
6 q.size(); //查詢q的元素個數
7 q.empty(); //查詢q是否為空

  一定要註意在隊列中查詢隊首元素是front不是top,不然就會被無情報錯 本蒟蒻第一次打隊列時記錯了,結果……

隊列的模板

  題目

      題目描述

      請你實現一個隊列(queue),支持如下操作:
      push(x):向隊列中加入一個數 x。
      pop():將隊首彈出。如果此時隊列為空,則不進行彈出操作,並輸出 “ERR_CANNOT_POP”。
      query():輸出隊首元素。如果此時隊首為空,則輸出“ERR_CANNOT_QUERY”。
      size():輸出此時隊列內元素個數。

      輸入格式

      第一行,一個整數n,表示操作的次數。

      接下來n行,每行表示一個操作。格式如下:

      “1 x”,表示將元素 `x` 加入隊列。
      “2”,表示將隊首彈出隊列。
      ”3”,表示查詢隊首。
      “4”,表示查詢隊列內元素個數。

      輸出格式

      輸出若幹行,對於每個操作,按「題目描述」輸出結果。

      每條輸出之間應當用空行隔開。

      輸入樣例                                               輸出樣例

      13                                 2
      1 2                                1
      3                                  2
      4                                  233
      1 233                              0
      3                                  ERR_CANNOT_POP
      2                                  ERR_CANNOT_QUERY
      3                                  144
      2
      4
      3
      2
      1 144
      3
 1 #include<bits/stdc++.h> //萬能頭文件,包含了<queue>
 2 #define MAXN 100010
 3 #define ll long long
 4 using namespace std;
 5 int n; 
 6 queue<unsigned long long> s;
 7 int main()
 8 {
 9     cin>>n;
10     for(int i=1;i<=n;i++)
11     {
12         int a;
13         cin>>a;
14         if(a==1)
15         {
16             int x;
17             cin>>x;
18             s.push(x);
19         }
20         if(a==2)
21         {
22             if(s.empty())
23                 cout<<"ERR_CANNOT_POP"<<endl;
24             else
25                 s.pop();
26         }
27         if(a==3)
28         {
29             if(s.empty())
30                 cout<<"ERR_CANNOT_QUERY"<<endl;
31             else
32                 cout<<s.front()<<endl;
33         }
34         if(a==4)
35             cout<<s.size()<<endl;
36     }
37     return 0;
38 }

                                                                        碼字不易,點個贊唄§(* ̄▽ ̄*)§


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • vue2 使用 cesium 篇 今天好好寫一篇哈,之前寫的半死不活的。首先說明:這篇博文是我邊做邊寫的,小白也是,實現效果會同時發佈截圖,如果沒有實現也會說明,僅僅作為技術積累,選擇性分享,不做教學哈。不好別噴。 安裝 cesium 這個就很簡單,只需要一句簡簡單單的命令就可以實現在 vue 項目 ...
  • 本文是系列第二篇。系列文章: 現代圖片性能優化及體驗優化指南 - 圖片類型及 Picture 標簽的使用 圖片資源,在我們的業務中可謂是占據了非常大頭的一環,尤其是其對帶寬的消耗是十分巨大的。 對圖片的性能優化及體驗優化在今天就顯得尤為重要。本文,就將從各個方面闡述,在各種新特性滿頭飛的今天,我們可 ...
  • 一、背景 遠程服務將電腦程式的工作範圍從單機擴展到網路,從本地延伸至遠程,是構建分散式系統的首要基礎。遠程服務調用(Remote Procedure Call,RPC)在電腦科學中已經存在了超過四十年時間。但很多人無法明確區分RPC與Rest。本文就講一講RPC和Rest的本質區別。 二、分析 ...
  • 談到java中的併發,我們就避不開線程之間的同步和協作問題,談到線程同步和協作我們就不能不談談jdk中提供的AbstractQueuedSynchronizer(翻譯過來就是抽象的隊列同步器)機制; (一)、AQS中的state和Node含義: AQS中提供了一個int volatile state ...
  • RabbitMQ 配置環境 安裝 erlang環境以及RabbitMQ RabbitMQ埠號: 5672 去官網下載 https://www.rabbitmq.com 然後重啟RabbitMQ服務 RabbitMQ安裝教程 開放埠15672 這裡,通過http://IP地址:15672 進行We ...
  • 在如 rails 這樣的開源庫中,我們常常見到這樣的一類寫法: class_eval <<-RUBY, lxx_file, lxx_line + 1 def xxx # do something here end RUBY 令人困惑不已。 不過這裡的知識點非常簡單,只要掌握了 heredoc 與 e ...
  • 前言 文章主要說明在FA中的中文函數的代碼實現,不僅要知道用法,更要知其實現的原理。前面的用法為FA中的用法,僅支持在FA中使用,源碼可以在其它app中使用。 非原創,代碼收集整理於網路。 進入子頁面 進入子頁面("頁面名稱") lua源碼: function 進入子頁面(name,param) i ...
  • 0、引言 我們在嵌入式開發的過程中,經常可以碰到在一些巨集定義或者是代碼段中使用了do {...} while(0)的語句,從語義上理解,do {...} while(0)內的邏輯就只執行一次,並沒有迴圈執行,粗略看來,似乎畫蛇添足了,那麼為什麼還需要在只執行一次的邏輯外面加上一層do {...} w ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...