-4
我基本上構建了一個可以在4個不同方向上傳輸的鏈表。重要概念如下:具有4個指針的節點的遞歸插入函數返回null
Node
在此方案中的一類,有四個Node
指針作爲類成員。Data
和Coordinates
也是類。Data
只是節點將包含的數據。raw_coordinates
是新節點應該具有的座標。Position
是當前節點的座標。moveNorth
,moveSouth
,moveEast
和moveWest
返回反映位置變化的新座標。例如,位置節點可能具有座標(0,0)。moveNorth
取得位置並返回(0,1)。
最後,我想說,我不關心子節點不指向父節點。 (即,如果節點node-> north具有返回到前一個節點的有效節點→南,則不感興趣)。我的函數返回null
。這裏是我的代碼:
Node* Map::insertNode(Node *node, Data raw_data, Coordinates raw_coordinates, Coordinates position)
{
if (node == NULL)
{
if (compare_coordinates(raw_coordinates, position))
{
return (newNode(raw_data, raw_coordinates));
}
else
{
return node;
}
}
else
{
if (insertNode(node->north,raw_data, raw_coordinates, moveNorth(position)) != NULL)
{
node->north = insertNode(node->north, raw_data, raw_coordinates, moveNorth(position));
}
else if (insertNode(node->south,raw_data, raw_coordinates, moveSouth(position)) != NULL)
{
node->south = insertNode(node->south, raw_data, raw_coordinates, moveSouth(position));
}
else if (insertNode(node->west, raw_data, raw_coordinates, moveWest(position)) != NULL)
{
node->west = insertNode(node->west, raw_data, raw_coordinates, moveWest(position));
}
else if (insertNode(node->east, raw_data, raw_coordinates, moveEast(position)) != NULL)
{
node->east = insertNode(node->east, raw_data, raw_coordinates, moveEast(position));
}
return node;
}
}
你的問題是什麼?你從字面上只發布了你的pgoram的描述。 – Rakete1111
當使用調試器逐步完成代碼時,您觀察到了什麼? – user0042
那麼我不斷收到一個分段錯誤,所以我想知道是否有人可以幫我修復它。 –