c++用类模版实现push与 pop
2018-02-01 09:50
246 查看
#include<iostream> using namespace std; template <class T> class templa{ public: //初始化 templa(int n){ m=n; mystr=(T*)malloc(sizeof(T)*n+sizeof(T)); for (int i =0; i<n; i++) { cout<<"请输入第"<<i<<"位要插入的元素:"<<endl; cin>>mystr[i]; } cout<<"-----------allen---初始化完成---请指示-----------"<<endl; } //打印 void dayin(){ for (int i = 0; i<m; i++) { cout<<mystr[i]<<endl; } cout<<"-----------allen---dayin完成---请指示-----------"<<endl; } //增加 bool add(T t,int n){ T * temp=(T *)malloc(sizeof(T)*m+sizeof(T)+sizeof(T)); for (int i =0; i<n; i++) { temp[i]=mystr[i]; } temp =t; for (int i =n; i<m+1; i++) { temp[i+1]=mystr[i]; } delete[] mystr; mystr=temp; m++; cout<<"------------allen----add完成----请指示-----------"<<endl; return true; } //删除 bool move(int n){ T * temp=(T *)malloc(sizeof(T)*m); for (int i =0; i<n; i++) { temp[i]=mystr[i]; } for (int i =n; i<m+1; i++) { temp[i-1]=mystr[i]; } delete[] mystr; mystr=temp; m--; cout<<"------------allen----move完成----请指示-----------"<<endl; return true; } //改 bool change(T t,int n){ mystr =t; // cout<<mystr <<endl; cout<<"-----------allen---move完成---请指示-------------"<<endl; return true; } //查 T cha(int n){ cout<<mystr <<endl; return mystr ; cout<<"-----------allen---cha完成----请指示--------------"<<endl; } ~templa(){ if (mystr!=NULL) { delete [] mystr; } cout<<"-----------allen---~templa完成---请指示-----------"<<endl; } //push bool push(T a){ T * temp=(T *)malloc(sizeof(T)*m+sizeof(T)+sizeof(T)); for (int i =0; i<m; i++) { temp[i]=mystr[i]; } temp[m]=a; delete[] mystr; mystr=temp; m++; cout<<"------------allen----push完成----请指示-----------"<<endl; return true; } //pop bool pop(){ int n=m; T * temp=(T *)malloc(sizeof(T)*(n-1)); for (int i =0; i<n-1; i++) { temp[i]=mystr[i]; } delete[] mystr; mystr=temp; m--; cout<<"------------allen----pop完成----请指示-----------"<<endl; return true; } private: //个数 int m; T* mystr; }; int main() { int a; cout<<"请输入要存的个数:"<<endl; cin>>a; templa<int> allen(a); allen.dayin(); allen.move(2); allen.dayin(); allen.cha(2); allen.add(1, 2); allen.dayin(); allen.change(1, 1); allen.push(22); allen.dayin(); int b; cout<<"请输入要存的个数:"<<endl; cin>>b; templa<double> allen2(b); allen2.dayin(); allen2.move(2); allen2.dayin(); allen2.cha(2); allen2.add(3, 2); allen2.dayin(); allen2.change(3, 1); allen2.pop(); allen2.dayin(); return 0; }
相关文章推荐
- 自定义stack类模版,实现empty?full?push,pop,gettop,clear,display
- C++:用两个栈来实现一个队列,完成队列的Push和Pop操作
- c++ 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 利用链表实现一个先入后出的栈结构,并提供栈操作的push和pop的接口
- C++模版编程——单链表的实现
- 自定义 push 和 pop 实现有趣的相册翻开效果(上)
- 简单双向链表(C++模版技术实现)
- 简单顺序栈(C++模版技术实现)
- 两个栈实现一个队列的push和pop
- 实现一个栈,push、pop、求栈中最小值min的时间复杂度为O(1)
- 堆的实现(堆的建立及push、pop元素)
- 实现一个栈的pop,push,Min(最小值),时间复杂度为O(1)
- C++根据头文件自动生成实现文件框架(支持模版)
- 一个栈,只提供push,pop,top,empty四种操作(这四种操作就是C++标准里的操作),对该栈的元素进行排序
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 实现一个栈,要求实现一个push,pop,min(返回最小值)的时间复杂度为0(1)
- 中缀表达式转后缀表达式(用于求字符串表达式值)(js栈和队列的实现是通过数组的push和unshift方法插值,pop方法取值)
- 【C++数据结构】顺序表的模版类实现
- Rhyme/剑指Offer Java05 拓展 用两个队列实现一个栈的push和pop操作