1、stack容器的基本概念
stack是一種先進(jìn)后出(First In Last Out,FILO)的數(shù)據(jù)結(jié)構(gòu),它只有一個(gè)出口,形式如圖所示。stack容器允許新增元素,移除元素,取得棧頂元素,但是除了最頂端外,沒有任何其他方法可以存取stack的其他元素。換言之,stack不允許有遍歷行為。 有元素推入棧的操作稱為:push,將元素推出stack的操作稱為pop。
2、stack容器特點(diǎn)
Stack所有元素的進(jìn)出都必須符合”先進(jìn)后出”的條件,只有stack頂端的元素,才有機(jī)會(huì)被外界取用。 Stack不提供遍歷功能,也不提供迭代器。
3、stack常用API
3.1stack構(gòu)造函數(shù)
stack<T> stkT;//stack采用模板類實(shí)現(xiàn), stack對象的默認(rèn)構(gòu)造形式:stack(const stack &stk);//拷貝構(gòu)造函數(shù)
3.2stack賦值操作
stack& operator=(const stack &stk);//重載等號(hào)操作符
3.3stack數(shù)據(jù)存取操作
push(elem);//向棧頂添加元素 pop();//從棧頂移除第一個(gè)元素 top();//返回棧頂元素
3.4stack大小操作
empty();//判斷堆棧是否為空 size();//返回堆棧的大小
案例:
#include <iostream>#include<stack>using namespace std;void test()
{
stack<int> s;
s.push(10);
s.push(20);
s.push(30);
s.push(40);
s.push(50);
if(s.empty())
{
cout<<"空棧"<<endl;
}
else
{
cout<<"棧的元素個(gè)數(shù):"<<s.size()<<endl;
while(!s.empty())//棧不為空 我就訪問棧頂元素
{
cout<<s.top()<<" ";
s.pop();//出棧 一個(gè)數(shù)據(jù)
}
}
}int main(int argc, char *argv[]){
test();
return 0;}
4、其他應(yīng)用場景
給定一個(gè)句子(只包含字母和空格), 將句子中的單詞位置反轉(zhuǎn),單詞用空格分割, 單詞之間只有一個(gè)空格,前后沒有空格。
比如: (1) “good good study day day up”-> “up day day study good good ”
案例:
#include<iostream>#include<stack>using namespace std;int main(){
string ss;
stack<string> sstack;
while(cin>>ss){
sstack.push(ss);
}
while(sstack.size()>1){
cout<<sstack.top()<<" ";
sstack.pop();
}
cout<<sstack.top()<<endl;
return 0;}
更多關(guān)于“物聯(lián)網(wǎng)培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時(shí)歡迎你來試聽。