1.基本概念
棧中的元素遵守「先進後出」的原則(lifo,last in first out)
只能在棧頂進行插入和刪除操作
壓棧(或推入、進棧)即push,將資料放入棧頂並將棧頂指標加一
出棧(或彈出)即pop,將資料從棧頂刪除並將棧頂指標減一
棧的基本操作有:pop,push,判斷空,獲取棧頂元素,求棧大小
2.構造棧
可以使用陣列構造棧,也可以使用單向鍊錶構造,我覺得使用單向鍊錶更加靈活方便,下面的例子我使用單向鍊錶來構造棧。
單向鍊錶的頭插法比較適合,煉表頭作為棧頂:
節點的資料結構:
template用模板類構造乙個簡單的stack類:struct
node //
建構函式
node(t t) :value(t), next(nullptr){}
};
templategithub: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()
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,則稱棧上溢。這裡使用動態分配記憶體的方式實現棧,並可以動態的調整棧的大小,如...