[英]Appending a new node to linked list
基本上就是标题所说的,我正在尝试 append (添加到我的列表末尾)。 我的 BuildList function 接受一个大小参数,该参数确定列表将有多少个节点。 我的问题是我的 append function。 因此,如果我的头是 5,我该如何修复我的 append function 以便在 5 之后添加随机数?
typedef struct Node
{
int value;
struct Node* next;
} Node;
Node *createNode( int num )
{
Node *ptr;
ptr = (Node *) malloc( sizeof( Node ) );
ptr->value = num;
ptr->next = NULL;
return ptr;
}
Node* append (Node* head, Node* newNode)
{
if (head == NULL)
return newNode;
while (head -> next != NULL);
head -> next = newNode;
return head;
}
Node* buildList (int size)
{
Node* newNode = (Node*) malloc (sizeof(Node));
Node* head = NULL;
for (int i = 0; i < size; i++)
{
Node* newNode = createNode (rand () % 10);
head = append (head, newNode);
}
return head;
}
嗯,最明显的问题是这个
while (head -> next != NULL);
我相信你打算写这样的东西
Node *tmp = head;
while (tmp -> next != NULL) {
tmp = tmp->next;
}
tmp->next = newNode;
您不想在此处修改head
,因为您稍后会在 function 中返回它。 如果您不使用tmp
, head 将始终指向列表中的倒数第二个节点。
你只需要修改你的while,为什么你那里有一个空指令? 如果头部不是 NULL 那么你永远不会退出:
while (head -> next != NULL)
{
head = head -> next;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.