当我想要添加一些东西作为链表的头部时,为什么我的代码不起作用?

时间:2014-03-06 17:53:56

标签: c pointers 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 *列表所做的那样)

2 个答案:

答案 0 :(得分:1)

很难说你在追求什么,因为我发现你的问题不清楚。我将假设Node包含Node* next(指向Node的指针),因为类或结构不能包含其自身的完整实例,因此Node.next不能是Node

首先,(*added).next = (*list);(*list)取消引用Node*并解析为Node,因此如果将Node*指定为Node,我会感到惊讶。

第二,(*list) = added;。这个看起来更有可能进行编译,但它会在added指向的空间中执行list的浅层副本。

你的代码中没有指定实际指针的位置,所以我对'添加指针指针'的含义感到困惑。我也不知道你的意思是“不工作”。您需要解释您想要查看的行为以及您实际看到的行为。

答案 1 :(得分:0)

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
}