C 實現 棧的順序儲存(通過動態陣列)

2021-10-04 01:58:39 字數 994 閱讀 7267

前面講解了通過靜態陣列,實現順序棧那麼如果我們不想使用定長的陣列,轉而使用動態陣列又該怎麼編寫呢?強烈建議與上面這篇文章,對比著學習,注重二者不同的地方,這樣更能深刻掌握棧的順序儲存

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...