C 棧的用法及棧的實現

2021-07-30 09:42:00 字數 1768 閱讀 5978

首先看一下原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...