我的Stack
A.第一版
这个小程序是第一版。(会有第二版吗?)
1。 程序基本说明:用数组结合模板实现的极其简单的数据结构---stack。
2。 程序思路:栈底在数组的0位置,数组的上限就是栈的上限,用一个index来标定当前的栈顶,很土吧?
3。 主要函数介绍:
A. T pop(); void push(T element);
stack的基本操作,简单判断empty和溢出的情况。没什么好说的。
4。 不足之处:
A. 随便写的,计划再用链表实现一遍。
#include <iostream>
using namespace std;
const int MaxLen = 100;
template <class T>
class Stack
{
private:
T lst[MaxLen];
int domino;
public:
T pop();
void push(T element);
Stack();
bool empty();
bool full();
};
int main()
{
Stack<int> intStack;
for (int i=0; i<10; i++)
{
intStack.push(i*2);
}
for (i =0; i< 12; i++)
{
cout<<i<<" is "<<intStack.pop()<<"\n";
}
return 0;
}
template<class T>
bool Stack<T>::full()
{
return (domino==MaxLen);
}
template<class T>
Stack<T>::Stack()
{
domino =0;
}
template<class T>
bool Stack<T>::empty()
{
return (domino==0);
}
template<class T>
T Stack<T>::pop()
{
if (!empty())
{
domino--;
return lst[domino];
}
else
{
cout<<"\nEmpty!\n";
return NULL;
}
}
template<class T>
void Stack<T>::push(T element)
{
if (!full())
{
lst[domino]= element;
domino++;
}
else
{
cout<<"\noverflow!\n";
}
}