linkedlist,无法将节点链接到头部

时间:2015-04-26 02:45:01

标签: c++ linked-list

我只是在某个地方的中间丢失了方向,我无法弄清楚我的代码有什么问题。下面的函数是我的追加函数,用于将节点放入列表。

void AppendNode(struct s_list *list, unsigned int data)
{
    if (list == nullptr)
        return;

    struct s_node *tempHead = list->head;
    struct s_node *newNode = new s_node;
    newNode->next = nullptr;

    while (tempHead != nullptr)
        tempHead = tempHead->next;

    tempHead = newNode;
}

我调用此功能100次,根本不会将新节点与当前列表链接起来。找到问题并不难,但我很难受。给我一些建议。感谢。

// *********** **************************** //

感谢所有回复,但我仍有同样的问题。我已经为我的列表分配了头节点,然后将其传递给函数。现在,我改为直接传递列表的头部,不再列出,但仍然有相同的问题......

void AppendNode(struct s_node *head, unsigned int data)
{
    if (head == nullptr)
        return;

    struct s_node *tempHead = head;
    struct s_node *newNode = new s_node;
    newNode->next = nullptr;

    while (tempHead != nullptr)
        tempHead = tempHead->next;

    tempHead = newNode;
}

2 个答案:

答案 0 :(得分:1)

您的tempHead在列表末尾运行;此功能中的任何内容都不会更改列表。

首先处理空列表的情况:

if(list->head == NULL)
{
  list->head = newNode;
  return;
}

然后谨慎行事:

while (tempHead->next != nullptr)
  tempHead = tempHead->next;

tempHead->next = newNode;

答案 1 :(得分:0)

或者,如果您尝试将节点附加到列表末尾,请执行以下操作:

while (tempHead->next != nullptr)
    tempHead = tempHead->next;

tempHead->next = newNode;