佇列的概念
在說佇列之前,先回憶一下堆疊是什么,我們一般說堆疊是一個先進后出的資料結構,而佇列就是先進先出的資料結構,
佇列是定在表的一端進行插入,表的另一端進行洗掉,
通常,我們稱進資料的一端為隊尾,出資料的一端為隊首(這邊需要注意,經常會記反起碼我是這樣的),資料元素進佇列的程序稱為入隊,出佇列的程序稱為出隊,
佇列存盤的方式主要分為兩種:
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 }
碼字不易,點個贊唄§(* ̄▽ ̄*)§
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/544582.html
標籤:其他
上一篇:JUC學習-執行緒池部分
