Structure : Stack &Queue

#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;
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章