ええと、まず第一に、私は正直に言うと、リンクリストを実際に実装したことはありません。
だから私はそれが本当にばかげた単純なバグだと確信しています。
ええと(理由はわかりませんが、私はこの言葉が好きです)、少し頭をリフレッシュして、簡単なリンクリストを実装することにしました。
void addToLast(linkedList* head, int data) {
linkedList* ptr = head; // points to ptr
while(ptr) /* p ins't null */ ptr = ptr->next;
// ptr now is null
ptr = (linkedList*)malloc(sizeof(linkedList)); // we have new node
if(ptr == NULL) printf("DAFUQ Null\n");
ptr->num = data;
ptr->next = NULL;
// return!
return;
}
まあ、奇妙な理由で、すべての反復で ptr の値は NULL です。
関数を呼び出すたびにaddToLast
、ptr は NULL のままのようです。
理由は本当にわかりません - 本当に疲れていたのか、それとも単に愚かな問題を抱えているのかのどちらかです。
ええと、私が言ったように、なぜ ptr が NULL のままなのか理解できません。
新しいノードを割り当てます -
ptr = (linkedList*)malloc(sizeof(linkedList)); // we have new node
では、なぜ ptr はその値を保存しないのでしょうか??
メイン & 印刷機能:
void printList(linkedList* list) {
linkedList* p;
putchar('[');
for(p = list;p;) {
printf("%d, ",p->num);
p = p->next;
}
putchar(']');
}
int main() {
// create list
linkedList *root = (linkedList*)malloc(sizeof(linkedList));
root->next = NULL;
addToLast(root,0);
addToLast(root,5);
printList(root);
system("pause");
return 0; // blet :o
}