環形佇列的判空和判滿是乙個比較基礎的問題,可以通過以下兩種方法來實現,
定義環形佇列抽象類
#define max_size 1024
class circularqueue ;
circularqueue::circularqueue(int size)
this->data = new int[size];
this->size = size;
this->head = 0;
this->tail = 0;
}circularqueue::~circularqueue()
}int circularqueue::getsize()
方法一:
class queue1 : public circularqueue
bool enqueue(int val);
bool dequeue(int *ptr);
bool empty();
bool full();
};bool queue1::empty()
bool queue1::full()
bool queue1::enqueue(int val)
this->data[this->head] = val;
this->head = (this->head + 1) % this->size;
this->cap++;
return true;
}bool queue1::dequeue(int* ptr)
*ptr = this->data[this->tail];
this->tail = (this->tail + 1) % this->size;
this->cap--;
return true;
}
方法二:
class queue2 : public circularqueue
bool enqueue(int val);
bool dequeue(int *ptr);
bool empty();
bool full();
};bool queue2::empty()
bool queue2::full()
bool queue2::enqueue(int val)
this->data[this->head] = val;
this->head = (this->head + 1) % this->size;
return true;
}bool queue2::dequeue(int* ptr)
*ptr = this->data[this->tail];
this->tail = (this->tail + 1) % this->size;
return true;
}
測試**:
#include using namespace std;
void test()
void test2()
int main(void)
輸出結果:
enqueue result: 1
enqueue result: 1
enqueue result: 1
dequeue result: 1
enqueue result: 1
enqueue result: 1
enqueue result: 1
enqueue result: 0
dequeue result: 1
enqueue result: 1
迴圈佇列的兩種實現方式 判空與判滿存在區別
第一種實現方式 front 隊頭位置 rear 隊尾下乙個位置 size 元素個數 入隊 尾插,array rear value 出隊 front 迴圈 front rear size front rear 0 include include include typedef struct mycir...
佇列判空 (二)佇列的實現
源於生活,抽象生活。生活中的佇列 當然是停車場排隊出場啦。計算機的佇列 簡答的說就是先入先出 fifo 在大腦中要有的概念是 隊頭 狀態 就是排隊第乙個交錢準備出場的車 隊尾 狀態 最後乙個排隊準備交錢的車 入隊 動作 add.把車開入 出停車場的道 出棧 動作 out.交完錢,把車開出停車場。fi...
golang slice的判空 和 併發安全
判斷slice是否為空,不能與nil進行比較做判斷,因為slice有可能已初始化。而是應該使用len計算長度。例如package main import fmt func main fmt.println slice1 nil slice1 nil fmt.println slice1 len le...