我有一個名爲「node」的類。我將一堆節點對象鏈接在一起形成一個鏈表。當調用「節點」析構函數時,它只會刪除第一個節點。如何遍歷整個鏈接的節點列表並刪除每個節點對象?使用析構函數釋放鏈接對象
下面是類的定義:
class Node
{
private:
double coeff;
int exponent;
Node *next;
public:
Node(double c, int e, Node *nodeobjectPtr)
{
coeff = c;
exponent = e;
next = nodeobjectPtr;
}
~Node()
{
printf("Node Destroyed");
}
析構函數調用刪除的指針鏈接節點列表的第一個節點調用。
如果你只有幾個節點,只要做'刪除下一個' - 它會遞歸地破壞節點。如果你有幾百或幾千個,那麼創建一個LinkedList對象,並在那裏迭代地刪除它們,因爲否則就會發生堆棧溢出。 –
「如果你只有幾個節點」 - 你怎麼看?如果太多,你剛剛吹了堆棧。無界遞歸在C++中總是一個壞主意。 –
讓鏈表刪除它需要刪除的節點,而不要給節點類負責。 '刪除下一個'建議只會將OP畫在一個角落。如果以後會怎樣,所有需要刪除的都是列表中的單個節點? '刪除下一個'將是災難性的。 – PaulMcKenzie