您的位置:首页 > Web前端

【算法】用固定数组实现FIFO buffer

2014-01-15 20:09 357 查看
果然,死的很惨啊,哈哈哈。

【问题】用固定长度的数组实现FIFO buffer,写个lib库。(毛线是lib库?)

事后重新写了一遍,估计还是有问题,但肯定比googleDoc上那个要完善的多。代码如下:

bool bufferIsFull = false;
bool bufferIsEmpty = false;

template<class T>
class CFifoBuffer {
public:
CFifoBuffer(int s);
~CFifoBuffer(){};
T get();
void put(T data);
void print();
private:
T* buffer;
int size;
int readPos;
int writePos;
};
template <class T>
CFifoBuffer<T>::CFifoBuffer(int s) {
size = s;
buffer = (T*)malloc(sizeof(T) * size);
readPos = 0;
writePos = 0;
}
//从队尾放入数据
template <class T>
void CFifoBuffer<T>::put(T data){
if ((writePos + 1)%size == readPos) {
bufferIsFull = true;
return;
}
buffer[writePos] = data;
writePos = (writePos + 1) % size;
}
//从队头取出数据
template <class T>
T CFifoBuffer<T>::get() {
if (writePos == readPos) {
bufferIsEmpty = true;
return 0;
}
T temp = buffer[readPos];
readPos = (readPos + 1) % size;
return temp;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: