我正在構建一個AVL樹程序。我陷入了一個相當容易的境地,但很難理解什麼是錯的。我認爲這是該程序的錯誤,而不是我的原因是因爲我有相同的類功能之前,它與「左」和「右」交換,它工作得很好...成員函數返回變量的前一個值
正如你所看到的,該函數返回temproot
指針,該指針等於temp2
,如果root==temp
。有趣的是,雖然當我測試打印temproot
JUST之前,它的價值(在我的例子中是15),返回的實際值是STILL 20(以前的值temproot
)。我三重檢查了一切。它似乎沒有返回新獲得的價值......可能是什麼問題?
更具體,確切的代碼是這樣的:
//structure
struct avlnode
{
int data;
avlnode * left;
avlnode * right;
}* root;
//class function
avlnode * Tree::RL_rotation (avlnode * temp)
{
avlnode * temproot = temp;
avlnode * temp1= new avlnode;
temp1=temp->right;
avlnode * temp2= new avlnode;
temp2=temp1->left;
temp1->left=temp2->right;
temp2->right=temp1;
temp->right=temp2;
temp->right=temp2->left;
temp2->left=temp;
if (root==temp)
{
root=temp2;
temproot=temp2;
}
cout << "temproot= " << temproot->data << endl;
return temproot;
}
如果你說的是真的,它可能是緩衝區溢出(內存損壞)問題。 – SergeyA
你如何存儲函數的返回值? – NathanOliver
我不相信你。你是如何「檢查」這些東西的? 'temproot = temp2;'真的被執行了嗎? –