2017年6月10日 星期六

[教學] 教你如何 輕鬆了解資料結構-Stack

大家好
今天要來教大家Stack

Stack的概念可以先從一個日常生活的例子來了解:
今天要搬宿舍了
必須把宿舍的書全部搬回家
好在平時已經整理得差不多了
只剩下名偵探柯南的漫畫
一個紙箱就可以把書裝完帶回家了

當你在裝書的時候
因為你有順序強迫症
會按照集數把書一本一本的放入紙箱
你有沒有發現

第一本放進去的書要等第二本書拿起來才能看見
第二本放進去的書要等第三本書拿起來才能看見
以此類推
所以你想看87號的柯南漫畫
你得先把88號的漫畫拿出來才行

Stack的概念就是如此
如果有一個資料結構
遵守一個法則:先進後出(FILO) 後進先出(LIFO)
((如果有學過會計的人應該很熟悉這名詞吧XD
也就是先放進去的東西就會比較慢拿出來
我們就稱這個資料結構為Stack

以下是C++的方式實作Stack:

class stack{
public:
stack() : top(-1) {}
~stack() { top = -1;}
void push(int);
void pop();
int get_value();
int size();
private:
int top;
int dat[100];
};

void stack::push(int in)
{
++top;
dat[top] = in;
}

void stack::pop()
{
if(top != -1) --top;
}

int stack::get_value()
{
if(top != -1) return dat[top];
else {
std::cout << "get_value error\n";
return 0;
}
}

int stack::size()
{
return top+1;
}

※簡單測試

#include<iostream>
using namespace std;
int main()
{
stack s1;
int n[5] = {21,1,0,2,5};
for(int i=0;i<5;++i) s1.push(n[i]);
for(int i=0;i<5;++i) {
cout << "The value is " << s1.get_value() << endl;
s1.pop();
}
}


沒有留言:

張貼留言