Deprecated: Optional parameter $fieldset declared before required parameter $widget is implicitly treated as a required parameter in /home/wellschen/public_html/wp/wp-content/plugins/advanced-categories-widget/inc/class-advanced-categories-widget-fields.php on line 33
Deprecated: Optional parameter $fieldset declared before required parameter $widget is implicitly treated as a required parameter in /home/wellschen/public_html/wp/wp-content/plugins/advanced-categories-widget/inc/class-advanced-categories-widget-fields.php on line 82
Deprecated: Optional parameter $title declared before required parameter $widget is implicitly treated as a required parameter in /home/wellschen/public_html/wp/wp-content/plugins/advanced-categories-widget/inc/class-advanced-categories-widget-fields.php on line 82 網誌 – 第 24 頁 – 程式設計教育農場 by 陳富國
堆疊(Stack)是一種後進先出(Last In First Out, LIFO)的有序串列,亦即資料處理的方式都是在同一邊進行,也就是由相同的一端來進行插入與刪除動作。而我們日常生活中,也有一些是堆疊的例子,例如堆盤子、書本裝箱…等,都是一層一層的堆上去,如果想要取出箱子中某一本書,也只能從最上面開始取出。
【定義】
1.一群相同性質元素的組合,即有序串列(ordered List) 。
2.具有後進先出 (Last In First Out, LIFO) 的特性。
3.將一個項目放入堆疊的頂端,這個動作稱為Push(加入)。
4.從堆疊頂端拿走一個項目,這個動作稱為Pop(取出)。
5.Push/Pop的動作皆發生在同一端,則稱此端為Top(頂端)。
6.要取出資料時,則只能從Top(頂端)取出,不能從中間取出資料。
【堆疊的操作示範】
【堆疊常用的操作】
Push :加入新項目到堆疊的頂端。
Pop :取出堆疊頂端一個項目。
TopItem :查看堆疊頂端的項目內容。
IsEmpty :判斷堆疊是否為空,若為空則傳回真(True),否則傳回假(False)。
IsFull :判斷堆疊是否為滿,若為滿則傳回真(True),否則傳回假(False)。
【C#-Stack類別】
Stack.Push 方法 (Object)
using System;
using System.Collections; //C#的Stack所在的命名空間
public class SamplesStack
{
public static void Main()
{
// Creates and initializes a new Stack. 建立並初始化一個新的堆疊
Stack myStack = new Stack();
myStack.Push("The");
myStack.Push("quick");
myStack.Push("brown");
myStack.Push("fox");
// Displays the Stack. //印出堆疊內容
Console.Write("堆疊元素::");
PrintValues(myStack, '\t'); //呼叫下方PrintValues方法
// Removes an element from the Stack. 從堆疊裏移除一個元素
Console.WriteLine("(Pop)\t\t{0}", myStack.Pop());
// Displays the Stack. 印出堆疊內容
Console.Write("堆疊元素::");
PrintValues(myStack, '\t');
// Removes another element from the Stack. 從堆疊裏移除另一個元素
Console.WriteLine("(Pop)\t\t{0}", myStack.Pop());
// Displays the Stack. 印出堆疊內容
Console.Write("堆疊元素::");
PrintValues(myStack, '\t');
// Views the first element in the Stack but does not remove it.
//檢視堆疊裏的第一個元素,但不移除該元素,注意動作與pop不同
Console.WriteLine("(Peek)\t\t{0}", myStack.Peek());
// Displays the Stack.
Console.Write("堆疊元素::");
PrintValues(myStack, '\t');
}
public static void PrintValues(IEnumerable myCollection, char mySeparator)
{
foreach (Object obj in myCollection) //對每一個在myCollection集合裏的物件obj
Console.Write("{0}{1}", mySeparator, obj);
Console.WriteLine();
}
}
/*
程式輸出:
堆疊元素:: fox brown quick The
(Pop) fox
堆疊元素:: brown quick The
(Pop) brown
堆疊元素:: quick The
(Peek) quick
堆疊元素:: quick The
請按任意鍵繼續 . . .
*/