前面講解了通過靜態陣列,實現順序棧那麼如果我們不想使用定長的陣列,轉而使用動態陣列又該怎麼編寫呢?強烈建議與上面這篇文章,對比著學習,注重二者不同的地方,這樣更能深刻掌握棧的順序儲存
typedef
int elementtype;
#define maxsize 10
struct sqstack
;
注意:*p用於指向new開闢的動態陣列
class
stack
;
在析構函式中使用了new,應該相應的定義乙個複製建構函式和運算子過載函式,具體原因請看
c++ 當類的建構函式中使用new關鍵字時,注意使用複製(拷貝)建構函式,進行深複製
下面是具體方法:
stack::
stack()
stack::
~stack()
stack::
stack
(const stack& st)
//注意要進行深複製,把資料也複製
stack &stack::
operator=(
const stack &st)
//注意要進行深複製,把資料也複製
bool stack::
is_empty()
bool stack::
is_full()
void stack::
push
(const element_type &element_type)
}void stack::
pop(
)
總結:
①應該將指向動態陣列的指標和棧頂top設定為private,這樣比起使用struct更簡潔
②析構函式為 deletep
棧的順序儲存(陣列實現)
棧是只允許一一端進行操作的的線性表,首先強調的是棧是一種線性表,其次棧只限定在一端進行操作。initstack 初始化棧 stackempty 判斷棧空 push 進棧 pop 出棧 gettop 獲取棧頂元素 destorystack 銷毀棧 初始化typedef struct sqstack 初...
陣列實現棧的順序儲存功能
首先先了解一下棧的特性 棧 stack,又稱堆疊,它是運算受限的線性表,其限制是僅允許在表的一端進行插入和刪除操作,不允許在其他任何位置進行新增 查詢 刪除等操作。簡單的說 採用該結構的集合,對元素的訪問有如下的特點 1.先進後出 即,存進去的元素,要在後它後面的元素依次取出後,才能取出該元素 例如...
棧的順序儲存實現
首先要認識到viod p 2 表示的是兩個建立乙個包含兩個元素的陣列,每個元素是void 型別。即 void p 2 和這種寫法相同 void p0 void p1 採用份檔案的形式使用vs2013 c語言 編寫 ifndef seqstack h define seqstack h include...