用兩種方法實現棧 順序表和煉表

2021-07-16 06:09:57 字數 1412 閱讀 4609

棧是一種先進後出的資料結構,棧中的資料是先進後出的(first in last out, filo)。棧只有乙個出口,允許新增元素(只能在棧頂上增加)、移出元素(只能移出棧頂元素)、取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。棧裡面常用的函式有push()(增),pop()(刪),size()(求大小),top()(頂部)和empty()(空),

下面是用順序表實現棧的各種函式

順序表**實現:

#include #include using namespace std;

templateclass stack

~stack() }

public:

void _checkcapacity()

if (_top == _capacity)

delete _a;

_a = tmp;

} }void push(const t& x)

void pop()

size_t size()

bool empty()

t& top()

private:

t* _a;

size_t _top;

size_t _capacity;

};

鍊錶實現棧:

鍊錶實現**:

#include #include using namespace std;

templatestruct node

t _data;

node* _next;

};templateclass stack

~stack()

{} void push(const t& x)

else

++_size;

} void pop()

cur = cur->_next;

} delete _top;

_top = cur;

--_size;

} t& top()

bool empty()

size_t size()

private:

node* _top;

node* _base;

size_t _size;

};

測試**:

test.cpp

void test()

int main()



兩種棧的實現 順序棧和鍊錶棧

棧 一 定義 棧是限定盡在一端插入或刪除操作的線性表。後進先出 lifo 二 習慣上稱棧的可訪問元素為站棧頂 top 元素,元素插入棧稱為入棧 push 刪除元素稱為出棧 pop 三 棧的adt template class stack 建構函式 virtual stack 析構函式 virtual...

靜態鍊錶實現的兩種方法

物件的多陣列表示 用三個陣列next key prev 分別表示鍊錶的後繼 資料 前驅。以下的 分別展示了基本的字典操作和如何申請分配記憶體。由於有些語言不支援指標,所以我們可以用多陣列表示的靜態雙鏈表。include include include using namespace std defi...

Java棧的例項 陣列和鍊錶兩種方法

一 棧 棧的定義 棧 stack 是限制僅在表的一端進行插入和刪除運算的線性表。1 通常稱插入 刪除的這一端為棧頂 top 另一端稱為棧底 bottom 2 當表中沒有元素時稱為空棧。3 棧為後進先出 last in first out 的線性表,簡稱為 lifo 表。棧的修改是按後進先出的原則進行...