Structure : Stack &Queue

mac2024-04-16  44

#pragma once #include <vector> template <class T, int capacity = 30> class Stack { public: Stack() { pool.reserve(capacity); } void clear() { pool.clear(); } T& topEL() { return pool.back(); } T pop() { T val = pool.back(); pool.pop(); return val; } void push(const T &val) { pool.push_back(val); } private: std::vector<T> pool; };

队列

#pragma once #include <vector> template<class T, int size = 60 > class Myqueue { public: Myqueue() { q = std::vector<T>(size); first = last = -1; } void push(T); T pop(); bool isFull() { return (first == 0 && last == size - 1) || first == last + 1; } bool isEmpty() { return first == -1; } private: std::vector<T> q; int first, last; }; template<class T, int size> void Myqueue<T,size>::push(T val) { if (!isFull()) { if (last==size-1 || last== -1) { q[0] = val; last = 0; if (first == -1) first = 0; } else { q[++last] = val; } } else { std::cout << "Full" << std::endl; } } template<class T, int size> T Myqueue<T, size>::pop() { if (!isEmpty()) { T val = q[first]; if (first==last){ first = last = -1; } else if (first==size-1) { first = 0; }else{ first++; } return val; } }
最新回复(0)