講完了Array跟Linked list接下來我們來講Stack跟Queue吧d(`・∀・)b
什麼是Stack勒,先舉一些日常生活中的例子,像是餐廳裡面洗好堆起來的盤子,先洗好的會被放在最下面,最晚被洗好的會在最上面,而我們也會從頂端先拿,就是先拿最晚被洗好的盤子,又或著是折好後跌在衣櫃中的衣服們,先被折好的會被疊在最下面,最晚被折好的會在最上面,也是我們直接拿會先拿到的,這些概念就和Stack很像!!
例: push a, push b, push c, pop, pop, push d
是電腦科學中具有類似行為的特定類別的資料結構的數學模型;或者具有類似語意的一種或多種程式設計語言的資料類型。簡單一點說,在我們設計分析演算法時,不會特別針對某一個演算法特定的資料型態,也不會去考慮實作時的細節及資料本身的性質,而是將資料的一般特性與操作方式一起思考定義出的數學觀念。ADT是一種理論上的觀念,並不局限於任何一種特定的語言,而且每一種ADT都可以透過不同方式實現。今天介紹的Stack就是屬於ADT的一種,之後會介紹到的Queue及Graph、Tree等等也是。:.゚ヽ(*´∀`)ノ゚.:。
宣告:
push(S,item)
{
if(Top==n)return "S Full";
else{
Top=Top+1;
S[Top]=item;
}
}
pop(S)➝item
{
if(Top==0)return "S empty";
else{
item=S[Top];
Top=Top-1;
return item;
}
}
宣告:
push(S,item)
{
①new(t); //向系統要求一個Node空間
②t➝Data = item;
③t➝link = Top;
④Top = t;
}
pop(S)➝item
{
if(Top==Null)return "S empty";
else{
①t = Top; //t指向要pop的Node空間
②item = Top➝Data;
③Top = Top➝link; //Top要往下一個Node跑
④free(t); //回收t之Node空間
return item;
}
}
ADT維基百科
擁抱「資料結構」的「演算法」(07) - 堆疊 Stack
程式菜鳥自學C++資料結構演算法 – 堆疊Stack介紹與建立