C#堆栈和队列
C#堆棧和隊(duì)列
此前已經(jīng)采用 Array類和ArrayList類來把數(shù)據(jù)像列表一樣組織在一起. 盡管這兩種數(shù)據(jù)結(jié)構(gòu)可以方便的把數(shù)據(jù)組織起來進(jìn)行處理, 但是它們都沒有為設(shè)計(jì)和實(shí)現(xiàn)實(shí)際問題的解決方案提供真正的抽象。
堆棧(stack)和隊(duì)列(queue)是兩種面向列表(list-oriented)的數(shù)據(jù)結(jié)構(gòu), 它們都提供了易于理解的抽象. 堆棧中的數(shù)據(jù)只能在表的某一端進(jìn)行添加和刪除操作, 反之隊(duì)列中的數(shù)據(jù)則在表的一端進(jìn)行添加操作而在表的另一端進(jìn)行刪除操作. 堆棧被廣泛用于從表達(dá)式計(jì)算到處理方法調(diào)用的任何編程語言的實(shí)現(xiàn)中. 而隊(duì)列則用在區(qū)分優(yōu)先次序的操作系統(tǒng)處理以及模擬現(xiàn)實(shí)世界的事件方面, 比如銀行出納柜臺(tái)的隊(duì)列, 以及建筑物內(nèi)電梯的操作。
C#為使用這些數(shù)據(jù)結(jié)構(gòu)提供了兩種類:Stack 類和Queue類. 本章將會(huì)討論如何使用這些類并且介紹一些實(shí)用的例子。
堆棧, 堆棧的實(shí)現(xiàn)以及Stack 類
正如前面提到的那樣, 堆棧是最頻繁用到的數(shù)據(jù)結(jié)構(gòu)之一. 在堆棧中, 數(shù)據(jù)項(xiàng)只能從表的末端進(jìn)行訪問. 可訪問的這端被稱為是棧頂. 堆棧的標(biāo)準(zhǔn)模型是自助餐廳的盤子堆. 人們始終要從頂部拿走盤子, 而且當(dāng)洗碗工或者雜工把盤子放回盤子堆的時(shí)候也是把它放在盤堆的頂部. 堆棧是著名的后進(jìn)先出(LIFO)數(shù)據(jù)結(jié)構(gòu).
堆棧的操作
堆棧最基本的兩種操作就是向堆棧內(nèi)添加數(shù)據(jù)項(xiàng)以及從堆棧中刪除數(shù)據(jù)項(xiàng). Push(進(jìn)棧)操作是向堆棧內(nèi)添加數(shù)據(jù)項(xiàng). 而把數(shù)據(jù)項(xiàng)從堆棧內(nèi)取走則用 Pop(出棧)操作. 這些操作的實(shí)例說明可參見圖5-1.
總結(jié)
- 上一篇: 财务分析常用指标
- 下一篇: 西门子免授权CNC数控系统数据采集c#、