stackaslist,again

okdavinci 2005-05-10 03:14:32
//基类stack
#ifndef STACK_H
#defineSTACK_H
template<class T>
class stack
{
virtual ~stack()=0;
virtual const T&top()const=0;
virtual void push(const T&)=0;
virtual const T& pop()=0;

};
#endif
//







//派生类stackaslist
//stack的实现用list来完成。分别用stl中list和userdefine的list.
#include<iostream>
#include<list>
#include"stack.h"
using std::domain_error;


template<class T>
class stackaslist:public stack
{
public:
stackaslist();
~stackaslist();//用stl中的list应该没有必要再使用destructor了吧??????

void push(const T& obj);
const T& top();
const T& pop();

int getsize();

private:
int size;//最大的存储空间
int count;//已经存储数据的个数
std::list<T> li;

};





template<class T>
stackaslist<T>::stackaslist()//提示说基类stack没有可用的默认构造函数???????
{ //这个构造函数应该怎么写?
size=0;//0li.max_size; ;//应该多大?????????
count=0;
}

template<class T>
stackaslist<T>::~stackaslist()
{

}


template<class T>
int stackaslist<T>::getsize()
{
return size;
}

template<class T>
const T& stackaslist<T>::pop()
{
if(count==0)
throw domain_error("the stack is emputy");
const T temp= *li.end();
li.remove(temp);
cout<<"after pop() the size is"<<size<<endl;
returntemp;//return li.pop_back();
}

template<class T>
void stackaslist<T>::push(const T& obj)
{
if(count==size)
throw domain_error("the stack is full");
li.push_front(obj);
cout<<"now the size after push is"<<size<<endl;
}

template<class T>
const T& stackaslist<T>::top()
{
return *li.end();
}




//main.cpp#include<iostream>
#include<list>
#include"stack.h"
#include"stackaslist.h"
using std::cout;
using std::endl;
int main()
{
stackaslist<int> sta;
cout<<"now the size"<<sta.getsize()<<endl;;
for(int i=0;i<=6;i++)
{
sta.push(i);
}

cout<<sta.pop()<<endl;;
cout<<sta.getsize()<<endl;
cout<<sta.top()<<endl;


}

///问题在注释中,谢谢。

...全文
88 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbing7 2005-05-10
  • 打赏
  • 举报
回复
template<class T>
stackaslist<T>::stackaslist()//提示说基类stack没有可用的默认构造函数???????
{ //这个构造函数应该怎么写?
size=0;//0li.max_size; ;//应该多大?????????
count=0;
}

...................................
我觉得既然是链栈,初始个数为0应该不是什么问题吧
okdavinci 2005-05-10
  • 打赏
  • 举报
回复
up once more
okdavinci 2005-05-10
  • 打赏
  • 举报
回复
up again

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧