模板参数和模板的模板参数实现栈和队列
来源:互联网 发布:淘宝质量问题退货邮费 编辑:程序博客网 时间:2024/05/29 13:37
#include <iostream>using namespace std;//利用顺序表实现栈#if 0template <class T>class Stack{public:Stack():_ptr(new T[3]), _capacity(3), _size(0){}Stack(const T*arr, size_t sz):_ptr(new T[sz]), _capacity(sz), _size(sz){for (size_t i = 0; i < sz; i++){_ptr[i] = arr[i];}}//元素入栈void Push(T data){IncreaseCapacity();_ptr[_size] = data;_size++;}//元素出栈T& Pop(){return _ptr[_size-1];_size--;}//判空bool Empty(){if (Size())return true;return false;}size_t Capacity(){return _capacity;}//获取大小size_t Size(){return _size;}//获取栈顶元素size_t Top(){return _ptr[_size-1];}~Stack(){delete [] _ptr;_ptr = NULL;}private://增容void IncreaseCapacity(){size_t sz = Size();size_t capacity = Capacity();size_t newsize = capacity * 2 + 3;if (sz >= capacity){T*newptr = new T[newsize];for (int i = 0; i < sz; i++){newptr[i] = _ptr[i];}delete[] _ptr;_ptr = newptr;_capacity = newsize;}}private:T* _ptr;size_t _capacity;size_t _size;};void test(){int arr[3] = { 1, 2, 3 };int sz = sizeof(arr) / sizeof(arr[0]);Stack<int>s1;Stack<int>s2(arr, sz);s2.Push(4);s2.Push(5);cout<<s2.Empty()<<endl;cout<<s2.Pop()<<endl;cout<<s2.Size()<<endl;cout<<s2.Top()<<endl;}#endif//模板参数#include "List.h"#include "Vector.h"#if 0template<class T,class Container=Vector<T>>class Stack{public:Stack(){}//入栈void Push(const T&data){V.PushBack(data);}//出栈T& Pop(){return V.Back();V.PopBack();}//判空bool Empty()const{return V.Empty();}//栈顶 constT& Top(){return V.Back();} size_t Size()const {return V.Size(); } ~Stack(){}private:Container V;};void test(){//Stack<int, List<int>>s1;Stack<int>s1;cout<<s1.Empty()<<endl;s1.Push(4);s1.Push(5);s1.Push(6);cout<<s1.Size()<<endl;cout << s1.Top() << endl;cout << s1.Pop() << endl;}int main(){test();system("pause");return 0;}#endif//模板的模板参数#if 0template<class T,template<class >class Container=Vector>class Stack{public:Stack(){}//入栈void Push(const T&data){V.PushBack(data);}//出栈T& Pop(){return V.Back();V.PopBack();}//判空bool Empty()const{return V.Empty();}//栈顶constT& Top(){return V.Back();}size_t Size()const{return V.Size();} ~Stack(){}private:Container<T> V;};void test(){//Stack<int, List>s1;Stack<int>s1;cout << s1.Empty() << endl;s1.Push(4);s1.Push(5);s1.Push(6);cout << s1.Size() << endl;cout << s1.Top() << endl;cout << s1.Pop() << endl;}#endif//队列template<class T,class Container=List<T>>class Queue{public:Queue(){}~Queue(){}//入对列void Push(const T&data){V.PushBack(data);}//出队列T& Pop(){return V.Back();V.PopFront();}//判空bool Empty()const{return V.Empty();}size_t Size()const{return V.Size();}private:Container V;};void test(){//Stack<int, List>s1;Queue<int>s1;cout << s1.Empty() << endl;s1.Push(4);s1.Push(5);s1.Push(6);cout << s1.Size() << endl;cout << s1.Pop() << endl;}int main(){test();system("pause");return 0;}
阅读全文
0 0
- 模板参数和模板的模板参数实现栈和队列
- 成员模板和参数模板
- 模板的模板参数
- 成员模板、模板的偏特化和特化、模板模板参数
- 【模板】栈和队列
- 省略号和可变参数模板
- 省略号和可变参数模板
- 省略号和可变参数模板
- 省略号和可变参数模板
- 模板渲染和参数传递.
- 使用数组和模板实现的队列
- 模板类型的模板参数
- 数据结构:模板实现栈和队列
- 模板模板参数
- C++ 模板模板参数
- 堆的创建、插入、删除,模板参数实现堆以及模板的模板参数实现堆
- 模板参数
- 模板参数
- Python的中文识别问题解决办法
- jquery实现单机li标签时,执行跳转,li标签下面的a标签路径
- zookeeper的分布式锁
- spring-data-redis 的RedisTemplate 开启enableTransactionSupport=true出现的问题
- Mybatis之高级映射collection (递归查出树形数据 )
- 模板参数和模板的模板参数实现栈和队列
- SqlServer2005没有控制端没法安装,Toad for SQL Server 5.7 Freeware使用,附下载地址
- OkHttp3下配置缓存
- 使用Nginx post_action配置 & filter模块中添加定时器 导致的coredump
- 数据库事物
- Java实现遗传算法
- 无类型与无类型指针
- php递归目录
- 极光推送自动集成与手动集成