0
我正在使用隊列來實現廣度優先搜索。樹的節點類型爲狀態,而隊列中的節點類型爲節點。如何將樹的節點轉換爲隊列的節點?
struct node
{
int b1,b2,b3,b4;
node* link;
}
struct state
{
int b1,b2,b3,b4;
state* rightChild;
state* leftChild;
};
的Queue.enqueue()函數的原型爲:
bool enqueue(node n);
傳遞給它的樹的節點(類型的國家),我必須要麼將它們轉換複製構造函數或重載賦值運算符,或者 - 我可以使隊列的基類狀態,以便接受狀態對象由多態性排隊。 現在做這件事的好方法是什麼?
犯錯,難道你必須保持的狀態''個隊列這可能工作呢? – verdesmarald
@ veredesmarald,但'state'在隊列中沒有必要的狀態*鏈接成員 – Ghost
如果您打算將此隊列用於BFS,您需要能夠找到每個節點的鄰居(在原始樹中)出隊並將它們添加到隊列的末尾。如果你的隊列只是存儲來自樹節點('b1 ... b4')的數據而不是一個指向實際樹節點的指針,你將如何實現這一點? – verdesmarald