C 棧 stack 的模板類實現

2021-08-06 01:23:54 字數 1402 閱讀 7170

1.基本概念

棧中的元素遵守「先進後出」的原則(lifo,last in first out)

只能在棧頂進行插入和刪除操作

壓棧(或推入、進棧)即push,將資料放入棧頂並將棧頂指標加一

出棧(或彈出)即pop,將資料從棧頂刪除並將棧頂指標減一

棧的基本操作有:poppush判斷空獲取棧頂元素求棧大小

2.構造棧

可以使用陣列構造棧,也可以使用單向鍊錶構造,我覺得使用單向鍊錶更加靈活方便,下面的例子我使用單向鍊錶來構造棧。

單向鍊錶的頭插法比較適合,煉表頭作為棧頂:

節點的資料結構:

template

struct

node //

建構函式

node(t t) :value(t), next(nullptr){}

};

用模板類構造乙個簡單的stack類:

template

class

mystack

void stackpush(t arg); //

入棧 t stackpop(); //

出棧 t stacktop(); //

獲取棧頂元素

void printstack(); //

列印棧int counts(); //

獲取棧內元素個數

bool isempty(); //

判斷空};

template

void mystack::stackpush(t arg)

template

t mystack

::stackpop()

}template

t mystack

::stacktop()

}template

void mystack::printstack()

}}template

int mystack::counts()

template

bool mystack::isempty()

github:

C 鏈棧模板類實現

pragma once template class mystack void push back t val t pop stacknode top const int size const return count bool isempty void freenode stacknode nod...

stack模板的實現

1 stack的通用模板類的定義 模板屬於c 多型的一部分,此外還有函式的過載,類的繼承,虛函式等等 這個檔案的名稱stack.h ifndef stack h define stack htemplate valuename class stack const stack operator con...

棧(Stack)的C語言實現

棧 stack 實現的是乙個後進先出策略。元素彈出的順序正好和它們壓入的次序相反。s.top表示棧頂元素,s.size表示棧的大小。如果試圖對乙個s.top 0的棧進行彈出操作,則稱棧下溢。如果s.top超過了s.size,則稱棧上溢。這裡使用動態分配記憶體的方式實現棧,並可以動態的調整棧的大小,如...