我只是在某个地方的中间丢失了方向,我无法弄清楚我的代码有什么问题。下面的函数是我的追加函数,用于将节点放入列表。
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;
}
答案 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;