多态实现线性表(队列、串、堆栈)
2017-04-18 16:05
351 查看
说明:
建立一个线性表的共性模板,来实现插入、删除、测长等操作。
建立一个线性表的共性模板,来实现插入、删除、测长等操作。
#include <iostream> #include <iomanip> using namespace std; template<class T> class tcontainer{ public: void push(T &a) ; void pop(void); int size(void) ; }; template<class T> class tvector : public tcontainer<T>{ public: static const int step = 100; tvector(){ _size = 0;//初始化向量实际大小 _cap = step;//向量容器为100 _buf = 0;//首地址,需要动态分配内存 re_capacity(_cap); //此时buf为空,即要设置buf初始值 }; ~tvector(){ if (_buf) free(_buf); }; //调整容量 void re_capacity(int s){ if (_buf) _buf = (T *)realloc(_buf, s*sizeof(T)); else{ _buf = (T*)malloc(sizeof(T)*s); } }; void push(T &a){ _size++; if (_size>_cap) re_capacity(_cap += step); _buf[_size - 1] = a; } void pop(void){ if (_size) _size--; } int size(void){ return _size; } const T &operator[](int index){ if (index >= 0 && index<_size) return *(_buf + index); } private: size_t _cap;//实际元素个数 size_t _size;//已分配的容量 T* _buf;//首地址 }; int main(int argc, char *argv[]) { tvector<int> v; for (int i = 0; i<300; ++i) v.push(i); for (int i = 1; i < 301; ++i) (i % 15 == 0) ? (cout << v[i - 1] << endl) : (cout << setw(3) << v[i - 1] << " "); /*cout << v[i-1] << endl;*/ system("pause"); return 0; }
相关文章推荐
- 多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作
- 试用多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作:插入,删除,测长等。
- 多态实现线性表(队列,串,堆栈)
- 线性表、堆栈、队列的特点,及代码实现
- JS数组实现队列和堆栈
- Java 使用LinkedList实现堆栈、队列的效果
- C/C++ 堆栈、队列的链式实现
- LeetCode学习之-225. 利用队列实现堆栈(Implement Stack using Queues)
- java之实现 线性表、栈和队列
- JS~js里实现队列与堆栈
- 堆栈和队列的实现
- Java 实现堆栈和队列
- 堆栈和队列的实现
- 用LinkedList实现队列和堆栈的数据结构
- C#实现冒泡排序 堆栈 队列
- 用堆栈实现队列
- python实现堆栈与队列的方法
- 用双链表实现的堆栈和队列
- 算法面试题:使用两个堆栈实现一个队列
- 【剑指offer】两个队列实现堆栈