[問題] C在linked list中assign node的問題?

作者: vhunter (SPC)   2025-01-13 15:56:49
大家好,最近在實作linked list
最下面是程式的節錄
AddAtHead是想將node新增在linked list的開頭
在AddAtHead中的註解是compile會過答案正確的程式,它的下面三行是我有問題的部分
它們的錯誤輸出範例是如果我有一個linked list是2->7,想在前面加一個1的node
此時會變成1->7而不是1->2->7
印(obj->val,obj->next->val)和(tem->val,tem->next->val)出來都是(1,7)
我一開始想將obj指向linkedlist的頭所以用obj=tem;
我以為的錯誤會是obj和tem變成迴圈的linked list或是都變成1->2,結果是1->7,百思
不得其解
所以想問大家知道這個運算obj=tem;中發生了什麼事?
為什麼只要像註解一樣避開obj=tem;就可以?
謝謝大家
typedef struct linklist{
int val;
struct linklist *next;
} MyLinkedList;
void AddAtHead(MyLinkedList* obj, int val) {
MyLinkedList* tem = malloc(sizeof(MyLinkedList));
// tem->val=obj->val;
// tem->next=obj->next;
// obj->val=val;
// obj->next=tem;
tem->val=val;
tem->next=obj;
obj=tem;
}

Links booklink

Contact Us: admin [ a t ] ucptt.com