文章目录
Queue
Queue的实现
Queue的普通实现
class MyQueue
{
private:
vector<int> data;
int p_start;
public:
MyQueue() {p_start = 0;}
bool enQueue(int x)
{
data.push_back(x);
return true;
}
bool deQueue()
{
if(isEmpty())
{
return false;
}
p_start++;
return true;
}
int Front()
{
return data[p_start];
}
bool isEmpty()
{
return p_start>=data.size();
}
};
Queue的环形实现
class MyCircularQueue
{
private:
vector<int> data;
int head;
int tail;
int size;
public:
MyCircularQueue(int k)
{
data.resize(k);
head = -1;
tail = -1;
size = k;
}
bool enQueue(int value)
{
if(isFull())
{
return false;
}
if(isEmpty())
{
head = 0;
}
tail = (tail+1)%size;
data[tail] = value;
return true;
}
bool deQueue()
{
if(isEmpty())
{
return false;
}
if(head == tail)
{
head = -1;
tail = -1;
return true;
}
head = (head+1)%size;
return true;
}
int Front(){
if(isEmpty()){
return -1;
}
return data[head];
}
int Rear(){
if(isEmpty()){
return -1;
}
return data[tail];
}
bool isEmpty(){
return head == -1;
}
bool isFull(){
return ((tail+1)%size) == head;
}
};
调用Queue的标准库
Queue的常见操作:enqueue、dequeue、get the first element……
queue<int> q;
q.push(5);
q.pop();
q.empty();
q.front();
q.back();
q.size();
Queue的应用
Queue and BFS
Stack
Stack的实现
Stack
class MyStack{
private:
vector<int> data;
public:
void push(int x){
data.push_back(x);
}
bool isEmpty(){
return data.empty();
}
int top(){
return data.back();
}
bool pop(){
if(isEmpty()){
return false;
}
data.pop_back();
return true;
}
}
调用Stack的标准库
Stack的常见操作,pop、push、get the top element
stack<int> s;
s.push(5);
s.empty();
s.pop();
s.size();
s.top();