试用多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作:插入,删除,测长等。
来源:互联网 发布:金税盘开票软件异常 编辑:程序博客网 时间:2024/05/18 00:54
试用多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作:插入,删除,测长等。(参考程序员面试宝典 第二版P105)
#include <iostream>#include <vector>using namespace std;template<class T>class tcontainer{public: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 <class T>class tvector:public tcontainer<T>{public:static const size_t step;tvector(){m_size = 0;m_cap = 0;m_pbuf =0;re_capacity(m_cap);}~tvector(){free(m_pbuf);m_pbuf = NULL;}virtual void re_capacity(size_t s);virtual void push(const T&);virtual void pop();virtual const T &begin();virtual const T &end();virtual size_t size();const T& operator[](size_t i);private:size_t m_size; //实际元素的个数size_t m_cap; //已经分配的容量T *m_pbuf; //首地址};template <class T>const size_t tvector<T>::step = 100; //数组增长的步上template <class T>void tvector<T>::re_capacity(size_t s){if (!m_pbuf){m_pbuf = new T[s];}else{delete[] m_pbuf;m_pbuf = new T[s];}}template <class T>void tvector<T>::push(const T& s)//入栈 {if (m_size>=m_cap)//m_size指向出栈的位置{re_capacity(m_cap += step);//依步长为step的值增加数组的空间}m_pbuf[m_size++] = s;}template <class T>void tvector<T>::pop() //出栈{if (m_size){m_size--;}}template <class T>const T& tvector<T>::begin()//栈头的值{return m_pbuf[0];}template <class T>const T& tvector<T>::end(){if (m_size){return m_pbuf[m_size - 1];}else{return false;}}template <class T>size_t tvector<T>::size(){return m_size;}template <class T>const T& tvector<T>::operator[](size_t i) //重载运算符{if (i>=0 && i<m_size){return m_pbuf[i];}}void main(){int m = 100;tvector<int> data;for (int i=0;i<m;i++){data.push(i);}data.pop();int length = data.size();for (i=0;i<length;i++){printf(" %3d",data[i]);if (i%7 == 0){cout<<endl;}}system("pause");}
运行结构:
- 试用多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作:插入,删除,测长等。
- 多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作
- 多态实现线性表(队列,串,堆栈)
- 多态实现线性表(队列、串、堆栈)
- 线性表的基本操作,包括:创建、插入、删除、查找等基本操作
- 编程实现顺序存储结构和链式存储结构线性表的建立、查找、插入、删除等基本操作
- 线性表、堆栈、队列的实现总结
- 线性表链式存储结构下基本操作的实现(初始化、赋值、取值、插入、删除、归并等)
- C语言实现线性表的插入和删除操作
- 线性表 初始化 插入 删除 的操作
- 线性表的插入、删除等操作(code and summary)
- 数据结构 线性链表的创立及其基本操作初始化、遍历、销毁、判空、求表长、删除、插入等
- 线性表的插入删除(java实现)
- 线性表的基本操作:新建,插入,删除,查找(C语言版)
- 线性表、栈、队列等查找、删除、插入的时间复杂度O()
- 线性表、栈、队列等查找、删除、插入的时间复杂度O()
- 试用多态实现线性表
- 线性表----队列(顺序表示)的基本操作
- 黑马程序员----IO包中的其他类
- 扩展欧几里得(递推实现)
- Windows下用Git下载android SDK源码并且用eclipse打开
- java深度复制
- 计算机视觉领域的牛人
- 试用多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作:插入,删除,测长等。
- JAVA WEB WICKET 6 HELLO WORLD
- 操作系统
- 即使她很难相信,但她还是会选择等待
- android Button 监听的几种方式
- 大侠是怎样练成的-周昆
- valgrind快速入门手册
- eclipse编译正确的工程也报错
- TCP连接建立与关闭