在我将新节点添加到列表末尾的情况下,以下工作正常:
typedef struct node* edge;
struct node
{
int data;
edge next;
};
void add(edge start, int val)
{
edge n = malloc(sizeof(struct node));
n->data = val;
n->next = NULL;
while (start->next)
start = start->next;
start->next = n;
}
但是,如果我将主体更改add()
为:
edge n = malloc(sizeof(struct node));
n->data = val;
n->next = start;
start = n;
什么都没有添加。
我期待新节点成为我列表的新起点,之前的起点是第二个。为什么第一个实现按预期工作而不是第二个?实现我对第二种方法所期望的功能的最佳方法是什么,可以用 void 函数来完成吗?