嗯,首先, 我不得不承認,我真的沒實現鏈表,嗯,真理,我最近沒有使用溫度。我的鏈表實現有什麼問題?
所以我敢肯定,一個非常愚蠢的簡單的錯誤。
那麼(不知道爲什麼 - 但我只是喜歡這個詞), 我試圖刷新一下我的想法,然後我決定實現一些簡單的鏈表。
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
}
的
linkdList **head
代替linkedList *head
從開內存泄漏,一點也不重要。你走*下一個指針,直到你到達一個空值,創建一個新節點,並將其分配....呃..無處? – WhozCraig