簡體   English   中英

當我想添加某些內容作為鏈接列表的開頭時,為什么我的代碼不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM