函数模板实现栈Stack(静态数组)
程序员文章站
2024-01-28 17:02:46
...
模板设计
首先创建一个模板类stack,这个stack中有保护元素:对应类型元素的指针、记录当前已有多少元素的整形变量count,当stack要插入新的元素时,count自增,直接添加到数组的末尾,删除时,count自减即可。该类拥有自己的成员函数,用来返回该stack的大小以及栈顶的元素。
功能设计
代码
main.cpp
#include <iostream>
using namespace std;
#define MAXSIZE 1000
#include "mystack.h"
int main()
{
cout<<"创建一个栈sta"<<endl<<endl;
stack <int > sta;
cout<<"将 1 压入栈内"<<endl;
sta.push(1);
cout<<"输出栈内元素:"<<endl;sta.show();
cout<<"将 2 压入栈内"<<endl;
sta.push(2);
cout<<"输出栈内元素:"<<endl;sta.show();
cout<<"将 3 压入栈内"<<endl;
sta.push(3);
cout<<"输出栈内元素:"<<endl;sta.show();
int a = sta.top();
cout << "栈顶元素是:"<< a << endl;
cout<< "栈的大小:"<< sta.size() <<endl;
cout<<"删除栈顶元素"<<endl;
sta.pop();
cout<<"输出栈内元素:"<<endl;sta.show();
a = sta.top();
cout << "栈顶元素是:"<< a << endl;
cout<< "栈的大小:"<< sta.size() <<endl;
cout<<"栈为空嘛?1表示空, 结果为:"<<sta.empty()<<endl;
return 0;
}
/*
s.empty()//如果栈为空返回true,否则返回false
s.size()//返回栈中元素的个数
s.pop()//删除栈顶元素但不返回其值
s.top()//返回栈顶的元素,但不删除该元素
s.push(X)//在栈顶压入新元素 ,参数X为要压入的元素
*/
mystack.h
#include <iostream>
using namespace std;
#define MAXSIZE 1000
template <typename T >
class stack
{
protected:
T* data;
int count;
public:
stack(){
data = new T[MAXSIZE];
count = 0;
}
~ stack(){ delete [] data; }
int size(){
return count;
}
void push(T a)
{
data[ count++ ] = a;
}
void pop()
{
if ( count == 0 ) ;
T a = data[ -- count];
}
T top()
{
if ( count == 0 ) ;
T a = data[ count - 1 ];
return a;
}
bool empty()
{
if ( count == 0 ) return true ;
return false;
}
void show()
{
for(int i=0;i<count;i++)
cout<<data[i]<<" ";
cout<<endl<<endl;
}
};
测试结果
上一篇: spring AOP源码深度解析
下一篇: artTemplate