“棧”(stack)
阿新 • • 發佈:2017-06-03
turn class ack logs printf ges 準備 esp ace
棧(Stack)是支持push和pop兩種操作的數據結構。push是在棧的頂端放入一組數據的操作。反之,pop是從其頂端取出一組數據的操作。因此,最後進入的棧的一組數據可以最先被取出(這種行為被叫做LIFO:Last In First Out,即先進後出)。
通過使用數組或者列表等結構很容易實現棧,不過C++、JAVA等程序語言的標準庫已經為我們準備好了這一常用結構,在比賽中需要時可以直接用。C++的標準庫中,stack::pop完成的僅僅是移除最頂端的數據,需要使用stack::top函數(這個操作也常常被稱為peek)。
函數的遞歸過程就是通過棧實現的。
以下是使用stack的例子:
#include<stack>
#include<cstdio>
using namespace std;
int main()
{
stack<int> s;//聲明存儲int類型數據的棧
s.push(1);//{}->{1}
s.push(2);//{1}->{1,2}
s.push(3);//{1,2}->{1,2,3}
printf("%d\n", s.top());//3
s.pop();//從棧頂移除{1,2,3}->{1,2}
printf("%d\n ", s.top());//2
s.pop(); //從棧頂移除{ 1,2 }->{1}
printf("%d\n", s.top());//1
s.pop();//{1}->{ }
return 0;
}
“棧”(stack)