#ifndef _stack_h
#define _stack_h
#pragma once
template< class t >
class stack
;//建構函式
stack( const stack& ) ;//拷貝建構函式
~stack( void ) ;//析構函式
stack& operator = ( const stack& ) ;//過載賦值運算子
int size( void ) const ;//返回棧中元素數目
int capacity( void ) const ;//返回當前棧的容量
bool isempty( void ) const ;//判斷棧是否為空棧
t& top( void ) const ;//返回棧頂元素
void push( const t& ) ;//將元素壓入棧中,當元素數目超過棧的容量時重建棧
void pop( void ) ;//彈出棧頂元素
protected:
int size ;//棧中元素數目
int capacity ;//棧的容量
void expand( void ) ;//擴充棧
void decrease( void ) ;//壓縮棧
private:
t* _ ;//儲存棧中元素的陣列
} ;
template< class t >
stack< t >::stack( const stack< t > & s ) : _( new t[ capacity ] ) , size( s.size ) , capacity( s.capacity )
template< class t >
stack< t >::~stack( void )
template< class t >
stack< t >& stack< t >::operator = ( const stack& s )
template< class t >
int stack< t >::size( void ) const
template< class t >
int stack< t >::capacity( void ) const
template< class t >
bool stack< t >::isempty( void ) const
template< class t >
t& stack< t >::top( void ) const
template< class t >
void stack< t >::pop( void )
template< class t >
void stack< t >::push( const t& obj )
template< class t >
void stack< t >::expand( void )
template< class t >
void stack< t >::decrease( void )
#endif
7 棧的定義及實現
一 棧的定義 棧是一種特殊的線性表 棧通常有兩種實現方式 順序結構實現和鏈式結構實現 性質 後進先出 lifo last in first out 二 棧的應用實戰 編譯器符號成對檢測 當需要檢測成對出現但又互不相鄰的事物時,使用棧的 後進先出 特性 演算法思路 從第乙個字元開始掃瞄 當遇見普通字元...
陣列棧的定義與實現
說明1 以下 在vs2017中編譯通過,讀者使用時可以直接將標頭檔案 sqstack.h 原始檔 sqstack.c 主檔案 main.c 中的內容直接拷貝過去,即可編譯執行!說明2 圖示 標頭檔案 sqstack.h 函式的宣告 ifndef sqstack h define sqstack h ...
鏈式棧的定義與實現
說明1 以下 在vs2017中編譯通過,讀者使用時可以直接將標頭檔案 linkstack.h 原始檔 linkstack.c 主檔案 main.c 中的內容直接拷貝過去,即可編譯執行!說明2 圖示 標頭檔案 linkstack.h 函式的宣告 pragma once include include ...