日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

stack堆栈简介

發(fā)布時(shí)間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stack堆栈简介 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

stack堆棧簡(jiǎn)介

??? 堆棧是一個(gè)線性表,插入和刪除只在表的一端進(jìn)行。這一端稱(chēng)為棧頂(Stack Top),另一端則為棧底(Stack Bottom)。堆棧的元素插入稱(chēng)為入棧,元素的刪除稱(chēng)為出棧。由于元素的入棧和出棧總在棧頂進(jìn)行,因此,堆棧是一個(gè)后進(jìn)先出(Last In First Out)表,即 LIFO 表。
?? ?C++ STL 的堆棧泛化是直接通過(guò)現(xiàn)有的序列容器來(lái)實(shí)現(xiàn)的,默認(rèn)使用雙端隊(duì)列deque的數(shù)據(jù)結(jié)構(gòu),當(dāng)然,可以采用其他線性結(jié)構(gòu)(vector 或 list等),只要提供堆棧的入棧、出棧、棧頂元素訪問(wèn)和判斷是否為空的操作即可。由于堆棧的底層使用的是其他容器,因此,堆棧可看做是一種適配器,將一種容器轉(zhuǎn)換為另一種容器(堆棧容器)。
?? ?為了嚴(yán)格遵循堆棧的數(shù)據(jù)后進(jìn)先出原則,stack 不提供元素的任何迭代器操作,因此,stack 容器也就不會(huì)向外部提供可用的前向或反向迭代器類(lèi)型。
?? ?stack堆棧容器的C++標(biāo)準(zhǔn)頭文件為 stack ,必須用宏語(yǔ)句 "#include <stack>" 包含進(jìn)來(lái),才可對(duì) stack 堆棧的程序進(jìn)行編譯。
???

創(chuàng)建 stack 對(duì)象
使用堆棧前,先要利用構(gòu)造函數(shù)進(jìn)行初始化,創(chuàng)建一個(gè)堆棧對(duì)象,以進(jìn)行元素的入棧、出棧等操作。
1.?? ?stack()
?? ?默認(rèn)構(gòu)造函數(shù),創(chuàng)建一個(gè)空的 stack 對(duì)象。
?? ?例如,下面一行代碼使用默認(rèn)的 deque 為底層容器,創(chuàng)建一個(gè)空的堆棧對(duì)象 s 。
?? ?stack<int>? s;
?? ?
2.?? ?stack(const stack&)
?? ?復(fù)制構(gòu)造函數(shù),用一個(gè) stack 堆棧創(chuàng)建一個(gè)新的堆棧。
?? ?例如,下面的代碼利用 s1 ,創(chuàng)建一個(gè)以雙向鏈表為底層容器的空堆棧對(duì)象 s2 。
?? ?// stack<int, list<int> >?? s1;
?? ?stack<int, list<int> >?? s2(s1);
?? ?


元素入棧
?? ?stack堆棧容器的元素入棧函數(shù)為 push 函數(shù)。由于 C++ STL 的堆棧函數(shù)是不預(yù)設(shè)大小的,因此,入棧函數(shù)就不考慮堆棧空間是否為滿,均將元素壓入堆棧,從而函數(shù)沒(méi)有標(biāo)明入棧成功與否的返回值。
?? ?如下是他的使用原型:
?? ?void? push(const value_type& x)
?? ?
?? ?
元素出棧
?? ?stack容器的元素出棧函數(shù)為 pop 函數(shù),由于函數(shù)并沒(méi)有判斷堆棧是否為空,才進(jìn)行元素的彈出,因此,需要自行判斷堆棧是否為空,才可執(zhí)行 pop 函數(shù)。
?? ?void pop()
?? ?
?? ?下面的示例代碼,將堆棧的所有元素全部出棧
?? ?// stack<int>? s;
?? ?while(!s.empty())
?? ?{?
?? ??? ?s.pop();// 出棧
?? ?}
?? ?
?? ?
取棧頂元素
?? ?stack容器的棧頂元素的讀取函數(shù)為 pop 函數(shù),將取出最后入棧的元素,如下是它的使用原型
?? ?value_type&? top()

堆棧非空判斷
?? ?隨著堆棧元素不斷出棧,堆棧可能會(huì)出現(xiàn)空的情況,因此,一般需要調(diào)用 empty 函數(shù)判斷是否非空,才作元素出棧和取棧頂元素的操作。
?? ?bool? empty()
?? ?判斷堆棧是否為空,返回 true 表示堆棧已空,false 表示堆棧非空。

總結(jié)

以上是生活随笔為你收集整理的stack堆栈简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。