棧,是一種存儲受限的線性數據結構,在存儲和訪問數據的時候只能訪問棧的一端。棧類似於一摞盤子,只能拿去最上面的盤子,也只能把盤子放到最上面。由於這種特點,棧是一種后進先出(Last in / First out, LIFO)的數據結構。
棧的主要操作有以下幾種:
- push
向棧頂插入元素(摞上去一個盤子) - top
獲取棧頂元素的值(看看最上面那個盤子上面寫了什么東西) - pop
取出棧頂元素(拿走最上面的盤子) - isEmpty
判斷棧是否為空(這里有沒有盤子) - clear
清空棧(把盤子都拿走)
鏈接:https://zhuanlan.zhihu.com/p/23041083
使用標准庫的棧和隊列時,先包含相關的頭文件
#include<stack>
#include<queue>
定義棧如下:
stack<int> s;
定義隊列如下:
queue<int> q;
s.empty() 如果棧為空返回true,否則返回false
s.size() 返回棧中元素的個數
s.pop() 刪除棧頂元素
s.top() 返回棧頂的元素
s.push() 在棧頂壓入新元素
q.empty() 如果隊列為空返回true,否則返回false
q.size() 返回隊列中元素的個數
q.pop() 刪除隊列首元素
q.front() 返回隊首元素的值
q.push() 在隊尾壓入新元素
q.back() 返回隊列尾元素的值
c++stack(堆棧)
它是一個容器的改編,它實現了一個先進后出的數據結構(FILO)
使用該容器時需要包含#include<stack>頭文件;
定義stack對象的示例代碼如下:
stack<int>s1;
stack<string>s2;
stack的基本操作有:
1.入棧:如s.push(x);
2.出棧:如 s.pop().注意:出棧操作只是刪除棧頂的元素,並不返回該元素。
3.訪問棧頂:如s.top();
4.判斷棧空:如s.empty().當棧空時返回true。
5.訪問棧中的元素個數,如s.size();
一個例子:
#include<iostream> #include<stack> using namespace std; int main(void) { stack<double>s;//定義一個棧 for (int i = 0; i<10; i++) s.push(i); while (!s.empty()) { printf("%lf\n", s.top()); s.pop(); } cout << "棧內的元素的個數為:" << s.size() << endl; system("pause"); return 0; }
原文:https://blog.csdn.net/tham_/article/details/44733101
