(一)模板实现栈
#pragma oncetypedef unsigned int size_t;templateclass Stack{public: Stack() :_array(NULL) ,_top(-1) ,_capacity(0) {} ~Stack() { if(_array) { delete[] _array; } }public: void Push(const T& num) { _CheckCapacity(); _array[++_top] = num; } void Pop() { if(Empty()) { printf("Empty!"); } else { _top--; } } T& GetTop() { return _array[_top]; } void PrintStack() { cout< <=(int)_top; i++) { tmp[i] = _array[i]; } _array = tmp; } }private: T* _array; int _top; //下标 size_t _capacity;};
2.模板实现队列
#pragma oncetemplatestruct Node{ T _data; Node * _next; Node(const T& d) :_data(d) ,_next(NULL); {}};template class Queue{public: Queue() :_head(NULL) ,_tail(NULL) ,_size(0) {} ~Queue { if(_head) delete _head; if(_tail) delete _tail; }public: void Push(const T& d) { if(_head == NULL) { _head = _tail = new Node (d); } else { _tail->_next = new Node (d); _tail = _tail->_next; } _size++; } void Pop() { if(_head == NULL) { cout<<"Empty!"< * tmp = _head; _head = _head->_next; delete tmp; } _size--; } bool Empty() { return _head == NULL; } size_t Size() { return _size; } T& Front() { assert(_head); return _head->_data; } T& Back() { assert(_tail); return _tail->_data; }private: Node * _head; Node * _tail; size_t _size;};