1. 程式人生 > >C#數據結構—棧和隊列

C#數據結構—棧和隊列

() inf void 完全 ilo 是否為空 ide pen 判斷

一:棧

  棧和隊列也是線性結構,線性表、棧和隊列這三種數據結構的數據元素以及數據元素間的邏輯關系完全相同,差別是線性表的操作不受限制,而棧和隊列的操作受到限制。棧的操作只能在表的一端進行,隊列的插入操作在表的一端進行而其它操作在表的另一端進行,所以,把棧和隊列稱為操作受限的線性表。

 1:棧的定義及基本運算

  棧(Stack)是操作限定在表的尾端進行的線性表。表尾由於要進行插入、刪除等操作,所以,它具有特殊的含義,把表尾稱為棧頂(Top),另一端是固定的,叫棧底(Bottom)。當棧中沒有數據元素時叫空棧(Empty Stack)。

  棧通常記為:S= (a 1 ,a 2 ,…,a n ),S是英文單詞stack的第 1 個字母。a 1 為棧底元素,a n 為棧頂元素。這n個數據元素按照a 1 ,a 2 ,…,a n 的順序依次入棧,而出棧

的次序相反,a n 第一個出棧,a 1 最後一個出棧。所以,棧的操作是按照後進先出(Last In First Out,簡稱LIFO)或先進後出(First In Last Out,簡稱FILO)的原則進行的,因此,棧又稱為LIFO表或FILO表。

  技術分享圖片

  由於棧只能在棧頂進行操作,所以棧不能在棧的任意一個元素處插入或刪除元素。因此,棧的操作是線性表操作的一個子集。棧的操作主要包括在棧頂插入元素和刪除元素、取棧頂元素和判斷棧是否為空等。

  棧的接口定義如下所示:

技術分享圖片
1 public interface IStack<T> 
2 {
3     int GetLength(); //
求棧的長度 4 bool IsEmpty(); //判斷棧是否為空 5 void Clear(); //清空操作 6 void Push(T item); //入棧操作 7 T Pop(); //出棧操作 8 T GetTop(); //取棧頂元素 9 }
View Code

  

  

  

C#數據結構—棧和隊列