C 棧的實現

2021-06-01 09:33:13 字數 1640 閱讀 2551

2009-04-15 11:40

順序棧(seqential stack)就是用順序儲存方式儲存的棧。在下面順序棧的類定義中是用陣列儲存的。用stacka[maxsize]儲存,maxsize是最大允許存放元素的個數。變數top表示棧頂部元素的位置,初始值為-1,表示棧空.

我們首先給出順序棧的抽象資料型別的描述,然後給出順序棧的類定義與實現。下面是順序棧的抽象資料型別的描述。

adt seqstack is

data 

棧頂表示,存放棧元素組和棧元素個數的最大數

seqstack

輸入:棧元素個數的最大數

~seqstack

刪除儲存棧元素的陣列

push

輸入:要進棧的項item

前置條件:棧末滿

動作:把item壓入棧頂

輸出:無

後置條件:棧頂增加了乙個新元素,棧頂指示加1

pop輸入:無

前置條件:棧非空

動作:彈出棧頂元素

輸出:返回棧頂元素的值

後置條件:刪除棧頂元素,棧頂指示減1

gettop

輸入:無

前置條件:棧非空

動作:取棧頂元素值

輸出:返回棧頂資料元素

後置條件:無

empty

輸入:無

前置條件:無

動作:檢查棧頂指示是否等於-1

輸出:棧空時返回1,否則返回0

後置條件:無

full

輸入:無

前置條件:無

動作:檢查棧頂指示是否等於maxsize-1

輸出:棧滿時返回1,否則返回0

後置條件:無

clear

輸入:無

前置條件:無

動作:清空棧

輸出:無

後置條件:棧頂指示為-1

end adt seqstack

///*

*************************************====

**seqstack.h           順序棧模板類的定義及實現

*************************************====

*/#include

#include

/#define maxsize   0xffff

template

class seqstack 

void push(const type &item);    //元素item壓棧

type pop();        //資料元素出棧,返回之

type gettop();       //讀棧頂資料元素並返回

int   empty()const

//判斷棧是否為空

int   full()const

//判斷棧是否為滿

void clear()

//清空棧

};template

seqstack::seqstack():

top(-1),maxsize(maxsize)

cout

}輸出結果:

10 9 8 7 6 5 4 3 2 1

press any key to continue

c 棧的實現

棧的實現 供學習c 人員使用 define stack size 10000 巨集定義 include 標頭檔案 using namespace std template struct node 無引數的的建構函式 node elemtypeitem,node link null 已知資料元素值和指...

棧的C 實現

棧的特點是先進後出 lifo 就像一疊盤子一樣,你只能從最上面取。這裡介紹幾個基本的功能 是否為空棧 empty 新增乙個元素 push 取最頂元素 top 彈出乙個元素 pop 輸出棧中的元素 out c 中有棧容器,用到時只需 include即可。這裡,我們自己建立乙個棧類,乙個int型的棧,再...

棧的C 實現

眾所周知,棧是一種最常用的資料結構,棧在實現上可以用陣列和結構體來實現,下面用結構體來實現棧。考慮到資料型別的通用性,這裡使用模板進行編寫,便於以後的學習過程中進行使用,不了解模板的同學,可以去網上了解一下c 的模板的使用。這裡有一篇關於c 模板類的部落格,可以先了解一下 c 模板詳解 好了,下面開...