我正试图将一个元素前置到一个由value和next组成的链表中,但是总是返回原始列表,有什么想法吗?
注意:我不能更改签名。
intlist* intlist_prepend(intlist* xs, int val)
{
intlist* ys = (intlist*)malloc(sizeof(intlist));
ys->val = val;
ys->next = xs;
return ys;
}
这是我的测试用例:
intlist* prepend = malloc(sizeof(intlist*));
prepend->val = 5;
prepend->next = NULL;
printf("\n*** testing intlist_prepend\n\n");
printf("expecting 6 5: ");
intlist_prepend(prepend, 6);
intlist_show(prepend);
printf("\nexpecting 7 6 5: ");
intlist_prepend(prepend, 7);
intlist_show(prepend);
但5只会被退回。
最佳答案
准备时,需要更新列表的标题。因此intlist_prepend()
的返回值成为新的头。
intlist* prepend = malloc(sizeof(intlist*));
prepend->val = 5;
prepend->next = NULL;
printf("\n*** testing intlist_prepend\n\n");
printf("expecting 6 5: ");
prepend = intlist_prepend(prepend, 6);
intlist_show(prepend);
printf("\nexpecting 7 6 5: ");
prepend = intlist_prepend(prepend, 7);
intlist_show(prepend);
关于c - C到链表的前置节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43771618/