テールにノードを追加して、リスト{1、2、3、4、5}を作成したいと思います。クライアントの目的で、他のすべてのノードは、テールポインタを使用して最後のノードの後に挿入されます。このソリューションの唯一の「問題」は、最初のノードの個別の特殊なケースのコーディングを最適化できることであり、クライアントは私に圧力をかけています。それにもかかわらず、このアプローチは理論的には本番コードにとっては堅実なものでなければなりません...少なくとも、テールに到達したときにnullポインター例外をスローし続けるまでは考えていました...何かが足りないのでしょうか?
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);
}