你好,我有一些麻煩的時候纔來「獲得」一個節點,到目前爲止我的代碼看起來像這樣...如何獲得在C節點沒有搗毀老鏈表
LinklistNode* get_node(LinklistNode* list_head, int index){
LinklistNode* temp = list_head;
if(temp != NULL && index > 0){
LinklistNode* list_pointer = temp;
LinklistNode* next_list_pointer = list_pointer ->next;
while(next_list_pointer->next != NULL && index >0){
index--;
if(index == 0) break;
list_pointer = next_list_pointer;
next_list_pointer = next_list_pointer ->next;
}
temp = list_pointer->next;
temp->next = NULL;
}
else if(index == 0){
return temp;
}
return temp;
}
...現在我試圖通過它是一個臨時變量,是完全相同的,但我不認爲這是行得通,因爲他們只會分享相同的內存地址,我打電話它如下(也許這將有助於)
LinklistNode* list_head2 = list_head;
list_head2 = get_node(list_head2,2);
print_list(list_head2);
print_list(list_head);
而從這看起來像這樣的輸出
列表:前任何LIST_HEAD調用方法list_head2後8 100 7 6 5 3 200 2 1 0 0 1 2 3 4 5 6 7 8
:列表:7
LIST_HEAD在調用後方法:列表:8 100 7
所以我的問題是,我搗毀list_heads值,我不知道如何去做,所以list_heads值和長度不會改變。 任何幫助都將不勝感激。
你可以使用人類語言,它會清楚你想要做什麼? –
LinklistNode * get_node(LinklistNode * list_head,int index)應返回指向列表中索引處的節點的指針,但不會將其刪除。 @VladfromMoscow讓我知道如果清除任何東西 – rickless