我想通过将节点附加到尾部来构建一个列表 {1, 2, 3, 4, 5}。出于我们客户端的目的,所有其他节点都使用尾指针插入到最后一个节点之后。此解决方案的唯一“问题”是可以优化为第一个节点编写单独的特殊情况,并且客户端正在逼迫我。尽管如此,从理论上讲,这种方法对于生产代码来说应该是可靠的……至少我认为直到它在我到达尾部时不断抛出空指针异常……我错过了什么吗?
struct node* BuildWithSpecialCase() {
struct node* head = NULL;
struct node* tail;
int i;
Push(&head, 1);
tail = head;
for (i=2; i<6; i++) {
Push(&(tail->next), i);
}
return(head);
}