棧之順序棧

2021-05-23 08:49:21 字數 997 閱讀 3097

資料結構草草學過,不過沒有認真運用過。 雖然知道一些最為基本的抽象型別及一些常用操作,不過叫我把這些基本的演算法寫出來我也是寫不出來的。因為常說資料結構+演算法是乙個程式設計師最基本的素質,所以這次認真加以複習。在複習的同時我盡量將自己學習的其他的一些基本知識比如c++中的物件導向思想也引入進來,同時也會將在複習中碰到其他的一些問題提出來,能解決的便解決,不能解決的可以試著解決。

to be a programmer .

棧是一種限定性的線性表,是將線性表的插入和刪除運算限制為僅在表的一端進行,通常將表中允許進行插入、刪除操作的一端稱為棧頂

。同樣地,棧在計算機中也有兩種基本的儲存結構:順序儲存結構和鏈式儲存結構。通常稱順序儲存的棧為順序棧,鏈式儲存的棧

為鏈棧。本文件只涉及順序儲存結構,順序結構可用高階程式語言中的陣列來模擬。

文章的組織結構分為三部分:開頭是簡單的介紹,之後是資料結構基本運算的**,最後是在複習中遇到的一些問題。

以下**實現了一些線性表最基本的運算,有關**的三點說明:

1) 運用了c++中的類模版概念;

2) 自己定義了有關棧的簡單的異常層次結構。

3) 因為棧就是一種特殊的線性表,這次**沒有像之前順序表那樣詳細注釋了每個函式的各種資訊。

實現**分三個部分:stackexception.h定義針對棧的異常類,stack.h定義了模版類,main.cpp進行簡單的測試,因為本節的重點是對異常類的捕獲進行測試,所以一些諸如列印出棧的元素沒有進行實現, 不過這些基本運算與線性表的類同。

在平時寫c++程式時我通常喜歡將類的定義放在標頭檔案中,把類的實現放在文字檔案中。但是,在使用模版的時候對此則有所注意,通常模版在編譯之時有兩種編譯模式,一種為包含編譯模式,在這種模式下,每個模版被例項化的檔案中必須包含函式模版/類模版及其成員的定義。另一種方式為分離編譯模式,這種模式下函式模版/類模版能夠像普通函式/普通類那樣進行組織,即將宣告與實現相分離。

上面的**採用的是包含模式,我將類模版的定義及其成員實現均放在標頭檔案stack.h中。

棧之順序棧

我是辛勤的小蜜蜂 哈哈 下面來介紹下順序棧。我們知道,棧具有乙個棧頂指標,有些教材中的順序棧的棧頂指標指向棧頂元素的下乙個位置,但本文中的棧頂指標都指向棧頂元素。其中,s data 0 是棧底元素,top是棧頂指標。include define stacksize 100 假定預分配的棧空間最多為1...

棧之順序棧

棧 限定僅在表尾進行插入或者刪除操作的線性表,又稱為先進後出的線性表 include include include include include include include include include include define inf 0x3f3f3f3f define ll lon...

棧,順序棧,鏈棧

棧作為一種限定性線性表,是將表的插入刪除限制為僅在表的一端進行,通常將表中允許插入刪除的一端叫做棧頂 top 因此棧頂的當前位置是動態變化的。棧的另一端叫做棧底 bottom 當棧中沒有元素時稱為空棧。插入操作稱為進棧或入棧,刪除操作稱為出棧或退棧。棧是先進後出的線性表,簡稱為lifo表。棧主要有兩...