用vector很好实现
内存占用少但费时
class MyCircularDeque {
vector<int>deque;
int max_size;
public:/** Initialize your data structure here.
Set the size of the deque to be k.
*/MyCircularDeque(int k) {max_size=k;
}
/** Adds an item at the front of Deque. Return true if the operation is successful. */
bool insertFront(int value) {if(deque.size()==max_size)
return false;
deque.insert(deque.begin(),value);
return true;
}
/** Adds an item at the rear of Deque. Return true if the operation is successful. */
bool insertLast(int value)
{if(deque.size()==max_size)return false;
deque.push_back(value);
return true;
}
/** Deletes an item from the front of Deque. Return true if the operation is successful. */
bool deleteFront()
{if(deque.size()==0)return false;
deque.erase(deque.begin());
return true;
}
/** Deletes an item from the rear of Deque. Return true if the operation is successful. */
bool deleteLast() {if(deque.size()==0)return false;
deque.pop_back();
return true;
}
/** Get the front item from the deque. */
int getFront()
{if(deque.size()==0)return -1;
return deque[0];
}
/** Get the last item from the deque. */
int getRear() {if(deque.size()==0)return -1;
int i=deque.size()-1;
return deque[i];
}
/** Checks whether the circular deque is empty or not. */
bool isEmpty()
{return deque.size()==0?true:false;
}
/** Checks whether the circular deque is full or not. */
bool isFull() {return deque.size()==max_size?true:false;
}};

本文介绍了一种利用C++标准库中的vector来实现循环双端队列的方法。这种实现方式虽然内存占用较少,但在操作上可能较为耗时。文章详细解释了如何通过vector的begin()和push_back()等成员函数来完成元素的插入、删除以及检查队列状态等操作。
1900

被折叠的 条评论
为什么被折叠?



