您好,登錄后才能下訂單哦!
(一)模板實現棧
#pragma once typedef unsigned int size_t; template <class T> class 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<<array[_top]; } size_t Size() { return _top + 1; } bool Empty() { return _top == -1; } private: void _CheckCapacity() { if(_array == NULL) { _capacity = 3; _array = new T[_capacity]; return; } if(_capacity = _top + 1) { _capacity *= 2; T* tmp = new T[_capacity]; for(size_t i = 0; i <=(int)_top; i++) { tmp[i] = _array[i]; } _array = tmp; } } private: T* _array; int _top; //下標 size_t _capacity; };
2.模板實現隊列
#pragma once template <class T> struct Node { T _data; Node<T>* _next; Node(const T& d) :_data(d) ,_next(NULL); {} }; template <class T> 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<T>(d); } else { _tail->_next = new Node<T>(d); _tail = _tail->_next; } _size++; } void Pop() { if(_head == NULL) { cout<<"Empty!"<<endl; return; } else if(_head == _tail) { delete _head; _head = _tail = NULL; } else { Node<T>* 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<T>* _head; Node<T>* _tail; size_t _size; };
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。