[英]Why doesn't my code work when I want to append something to be head of the linked list?
void addToHead(Node *list, Node added)
{
// Where NodePointer is a typedef of a pointer to a node
(*added).next = (*list);
(*list) = added; //Set list pointer back to first entry
}
由於某種原因,我對此有疑問。 為什么不起作用? 我以為將指針添加到指針將允許我更改指針的地址(就像我對Node * list所做的那樣)
很難說您想要什么,因為我發現您的問題不清楚。 我將假定Node Node* next
包含Node* next
(指向Node的指針),因為類或結構不能包含其本身的完整實例,因此Node.next
不能是Node
。
首先,加上(*added).next = (*list);
。 (*list)
取消引用Node*
並解析為Node
,因此如果將Node*
分配為Node
會編譯,我會感到驚訝。
其次,加上(*list) = added;
。 該代碼看起來更可能編譯,但是它將在list
指向的空間中進行added
的淺表副本。
沒有在代碼中分配實際指針的地方,所以我對“將指針添加到指針”的意思感到困惑。 我也不知道您所說的“無效”是什么意思。 您需要說明您想要看到的行為以及您實際看到的行為。
void addToHead(Node * list, Node* added)
{
//Where NodePointer is a typedef of a pointer to a node
(*added).next = list; //you could also do added->next = list
list = added; //Set list pointer back to first entry
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.