?? 9_8.h
字號:
//9_8.h
#ifndef STACK_CLASS
#define STACK_CLASS
#include <iostream>
#include <cstdlib>
using namespace std;
const int MaxStackSize = 50; //棧的大小,即棧中元素的最大個數
//類的聲明
template <class T>
class Stack
{
private:
T stacklist[MaxStackSize]; //數組,用于存放棧的元素
int top; //棧頂位置(數組下標)
public:
Stack (void); // 構造函數,初始化棧
void Push (const T& item); //將元素item壓入棧
T Pop (void); //將棧頂元素彈出棧
void ClearStack(void); //將棧清空
T Peek (void) const; // 訪問棧頂元素
int StackEmpty(void) const; //測試是否棧滿
int StackFull(void) const; //測試是否棧空
};
//類的實現
template <class T>
Stack<T>::Stack (void) : top(-1) //構造函數,棧頂初始化為-1
{}
template <class T>
void Stack<T>::Push (const T& item) // 將元素item壓入棧
{
if (top == MaxStackSize-1) // 如果棧滿,程序終止
{
std::cerr << "Stack overflow!" << endl;
exit(1);
}
top++; //棧頂指針增1
stacklist[top] = item; //將新元素壓入棧頂
}
template <class T>
T Stack<T>::Pop (void) // 將棧頂元素彈出棧
{
T temp;
if (top == -1) // 如果棧空,程序終止
{
std::cerr << "Attempt to pop an empty stack!" << endl;
exit(1);
}
temp = stacklist[top]; //取出棧頂元素
top--; //棧頂指針自減
return temp; //返回棧頂元素
}
template <class T>
T Stack<T>::Peek (void) const // 訪問棧頂元素
{
if (top == -1) // 如果棧空,程序終止
{
std::cerr << "Attempt to peek at an empty stack!" << endl;
exit(1);
}
return stacklist[top]; //返回棧頂元素
}
template <class T>
int Stack<T>::StackEmpty(void) const // 測試棧是否空
{ return top == -1; } //如果棧空則返回TRUE,否則返回FALSE
template <class T>
int Stack<T>::StackFull(void) const // 測試是否棧滿
{ return top == MaxStackSize-1; } //如果棧滿則返回TRUE,否則返回FALSE
template <class T>
void Stack<T>::ClearStack(void) // 清空棧
{ top = -1; }
#endif // STACK_CLASS
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -