爲什麼如果我想在鏈表中添加節點,雙遞歸指針對遞歸是必需的。它應該與單指針一起工作。遞歸中需要雙指針
下面的代碼是不是爲我工作
class LinkedList
{
private:
struct Node
{
int data;
Node* link;
}*Ptr;
public:
LinkedList()
{
Ptr = NULL;
}
void Add(int num)
{
/*Add(&Ptr, num);*/
Add(Ptr, num);
}
void Add(Node* Ptr, int num)
{
Node* tmp = NULL;
if (Ptr == NULL)
{
tmp = new Node;
tmp->data = num;
tmp->link = NULL;
Ptr = tmp;
}
else
{
Add(Ptr->link, num);
}
}
void Display()
{
Node *tmp;
tmp = Ptr;
while (tmp != NULL)
{
cout <<tmp->data << endl;
tmp = tmp->link;
}
}
}
int main() {
LinkedList l;
l.Add(10);
l.Add(20);
l.Add(30);
l.Add(40);
l.Add(50);
l.Display();
_getch();
return 0;
}
'PTR = TMP;'意味着*不*給調用者在'添加() '(實際上會發生內存泄漏)。您使用的參數'Ptr'與成員名稱相同('Ptr')沒有幫助(通常不太合適)。您需要通過地址或引用來傳遞您要修改的指針。這是C++,你可以猜測首選項(你是否被允許使用它們)。 – WhozCraig 2014-09-20 06:26:35