国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C# 數(shù)據(jù)結(jié)構(gòu) 棧 Stack

2019-11-17 02:18:19
字體:
供稿:網(wǎng)友

C# 數(shù)據(jù)結(jié)構(gòu) 棧 Stack

棧和隊(duì)列是非常重要的兩種數(shù)據(jù)結(jié)構(gòu),棧和隊(duì)列也是線性結(jié)構(gòu),線性表、棧和隊(duì)列這三種數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)元素和元素的邏輯關(guān)系也相同

差別在于:線性表的操作不受限制,棧和隊(duì)列操作受限制(遵循一定的原則),因此棧和隊(duì)列也稱為受限制的線性表。

棧的定義:操作在表的尾端進(jìn)行的線性表,棧頂:TOP,棧底:Bottom。棧中沒有數(shù)據(jù):空棧Empty Stack

表示方法:S=(a1,a2,a3,a4……..an)a1為棧底的元素,an為棧頂?shù)脑?這N個(gè)數(shù)據(jù)按照先后順序插入到棧內(nèi),找出棧內(nèi)數(shù)據(jù)則相反

遵循的原則(Last In First Out 即 LIFO) 或者 (First In Last Out 即 FILO)

image

image

現(xiàn)實(shí)生活中也有很多列子:洗盤子,用盤子

C#2.0 以下版本只提供了非泛型的 Stack 類,該類繼承了 ICollection、 IEnumerable 和 ICloneable 接口。 C#2.0 提供了泛型的

Stack<T>類,該類繼承 了 IEnumerable<T>、ICollection 和 IEnumerable 接口。

棧的存儲(chǔ)和實(shí)現(xiàn)

1.順序棧 :用一塊連續(xù)存儲(chǔ)的空間來存儲(chǔ)棧中的元素,連續(xù)的空間就是數(shù)組表示了。

2.鏈棧:在線性鏈表的基礎(chǔ)上進(jìn)行操作的,也就說存儲(chǔ)結(jié)構(gòu)采用的是鏈表的形式而操作采用的是FILO方式。

image

生活中的實(shí)例

除了洗盤子是不是還有其他的使用方式呢?

1.數(shù)值轉(zhuǎn)換 是將非負(fù)數(shù)的十進(jìn)制轉(zhuǎn)換成其他進(jìn)制的數(shù),一般的解決方法是輾轉(zhuǎn)相除法,例如:十進(jìn)制5142轉(zhuǎn)

成八進(jìn)制:

image

有圖我們可以看出 (5142)10=(12026)8

轉(zhuǎn)換思想:

1.判斷N不為0 N%8壓入到棧中

2.判斷N不為0 N%8壓入到棧中

最后N為0 停止,從而棧中的數(shù)據(jù)全部一個(gè)一個(gè)的POP得到八進(jìn)制數(shù)值。

2.程序設(shè)計(jì)中常用的問題:括號(hào)匹配問題,簡化起見,只有兩種括號(hào)匹配即:()和[] 嵌套的順序是任意的

([]()) 匹配 [()[()][]] 匹配 [(]) 不匹配,加入有一堆這樣的匹配的符號(hào)怎么判斷呢?

思想:1.如果棧為空,則PUSH

2.如果括號(hào)和棧頂?shù)睦ㄌ?hào)匹配,則將棧頂?shù)睦ㄌ?hào)POP

3.如果括號(hào)和棧棧頂?shù)睦ㄌ?hào)不匹配,則將括號(hào)PUSH

4.最后結(jié)束時(shí)候判斷棧是否為空,為空則匹配,不為空則不匹配

3.常用的算術(shù)表達(dá)式…..可以自己思考一下……

未完待續(xù)………


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 巴南区| 巢湖市| 南川市| 扎兰屯市| 随州市| 海伦市| 卓尼县| 建始县| 彭山县| 陆良县| 阳新县| 拜城县| 辛集市| 绥宁县| 城市| 曲麻莱县| 高密市| 郧西县| 和龙市| 桦甸市| 惠安县| 平顺县| 陕西省| 虹口区| 潍坊市| 诸暨市| 延吉市| 横峰县| 郴州市| 太保市| 含山县| 汉中市| 宁德市| 吴堡县| 达尔| 怀化市| 红原县| 怀柔区| 五莲县| 哈巴河县| 平南县|