1. 程式人生 > >“棧”(stack)

“棧”(stack)

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)