棧是一種先進後出的資料結構,棧中的資料是先進後出的(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 表。棧的修改是按後進先出的原則進行...