码迷,mamicode.com
首页 > 其他好文 > 详细

多态实现线性表(队列,串,堆栈)

时间:2015-07-28 21:17:50      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

技术分享试用多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作,插入,删除,测长等。



#include<iostream>

using namespace std;
template<typename t>
struct tcontainer
{
virtual void push(const t&) = 0;
virtual void pop() = 0;
virtual const t& begin() = 0;
virtual const t& end() = 0;
virtual size_t size() = 0;
};
template<typename t>
struct tvector :public tcontainer < t >
{
static const size_t _step =100;//向量容量为100
buf = 0;//首地址,需动态分配
re_capacity(_cap);


tvector()
{
_size = 0;
//初始化向量实际大小

_cap = _step;
}


virtual void pop()
{
if (_size)
_size--;
}
virtual const t& begin()
{
return buf[0];
}
virtual const t& end()
{
if (_size)
return buf[_size - 1];
}
virtual size_t size()
{
return _size;
  
}
~tvector()
{
free(buf);
}
void re_capacity(size_t s)
{
if (!buf)
buf = (t*)malloc(sizeof(t)*s);
else
buf = (t*)realloc(buf, sizeof(t)*s);
}
virtual void push(const t& v)
{
if (_size >= _cap)
re_capacity(_cap += _step);
buf[_size++] = v;


}
const t& operator[](size_t i)
{
if (i >= 0 && i < _size)
return buf[i];
}
private:
size_t _size;//实际元素个数
size_t _cap;//;已分配的容量
t* buf;//首地址
};
int main()
{
tvector<int> v;
for (int i = 0; i < 1000; ++i)
{
v.push(i);
}
for (int i = 0; i < 1000;++i)
cout << v[i]<<endl;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

多态实现线性表(队列,串,堆栈)

标签:

原文地址:http://blog.csdn.net/wangfengfan1/article/details/47102821

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!