首先看一下原c++棧的方法的基本用法:
push(): 向棧內壓入乙個成員;
pop(): 從棧頂彈出乙個成員;
empty(): 如果棧為空返回true,否則返回false;
top(): 返回棧頂,但不刪除成員;
size(): 返回棧內元素的大小;
**示例:
#include
#include
using
namespace
std;
int main()
cout
<<"棧的大小:"
接下來我們自己寫棧,這時就需要用到c++中的模板類(template)
#include#includeusing namespace std;
#define maxsize 0xffff
templatetype>
class my_stack
}my_stack(int size):top(-1),maxsize(size)
}~my_stack()
//是否為空
bool empty();
//壓棧
void push(type
tp);
//返回棧頂元素
type
top();
//出棧
void pop();
//棧大小
int size();
};templatetype>
bool my_stack::empty()
else
return
false;
}templatetype>
type
my_stack
::top()
else
}templatetype>
void my_stack::push(
type
tp)}
templatetype>
void my_stack::pop()
else
}templatetype>
int my_stack::size()
然後就可以在另乙個cpp檔案中使用它了(記得include):
#include
#include "my_stack.cpp"
using
namespace
std;
int main()
cout
<<"棧的大小:"
在編寫**的時候我突然很好奇,size()和sizeof輸出的區別,然後我用我寫的棧做了嘗試:
#include
#include
#include "my_stack.cpp"
using
namespace
std;
int main()
cout
<<"mysize()="
<"\nmysizeof="
<<<"size()="
<"\nsizeof="
<輸出:mysize()=20
mysizeof=12
size()=20
sizeof=40
並且可以看到我寫的棧類的變數只有三個整型(乙個template型),剛好12個位元組,由此可知c++提供的棧內不止我寫的這麼簡單,光變數就佔40個位元組 棧的相關知識及棧的實現
棧是一種常用的資料結構,通常稱為filo。棧通常分為3種 1 資料結構意義的 棧 filo 3 棧楨 棧 執行程式時為了儲存資料二開闢的空間,隨著函式的呼叫而不斷壓棧,隨著函式的呼叫結束 而銷毀 棧的資料結構圖示 棧通常用順序表來實現。template 定義乙個類模板,對於棧來進行操作class s...
棧 棧的實現
棧是一種線性儲存結構,棧中資料是按照 先進後出 方式進出棧,向棧中新增 刪除資料時,只能從棧頂進行操作。include using namespace std template class t class arraystack 建構函式 template class t arraystack arr...
Python實現棧,及棧的應用例項
棧 stack 是限定在表尾進行插入或刪除操作的線性表。因此,對於棧來說,表尾端有其特殊含義,稱為棧頂 top 表頭被稱為棧底 bottom 構造空棧 def init self,size self.size size self.stack 輸出棧 def str self return str s...