我知道如何從單獨鏈接列表的前面刪除節點,但我不知道如何從任意位置刪除節點。刪除鏈接列表中任意位置的節點
在我的具體問題,我繼續傳遞一個整數值x到鏈接列表中的每個節點。我可以添加和刪除,但是我需要寫一個函數,如果我確定了兩個相同的x,我刪除另一個實例。
我可以給我的代碼的例子,如果任何人需要我迄今爲止做的例子。感謝您的任何和所有迴應
此外,我正在與一個單一的鏈接列表。
我知道如何從單獨鏈接列表的前面刪除節點,但我不知道如何從任意位置刪除節點。刪除鏈接列表中任意位置的節點
在我的具體問題,我繼續傳遞一個整數值x到鏈接列表中的每個節點。我可以添加和刪除,但是我需要寫一個函數,如果我確定了兩個相同的x,我刪除另一個實例。
我可以給我的代碼的例子,如果任何人需要我迄今爲止做的例子。感謝您的任何和所有迴應
此外,我正在與一個單一的鏈接列表。
這是單鏈表有缺點。它需要重複執行刪除操作,因爲您無法找到任意元素的前一個元素。你可以找到它的下一個元素。您必須從列表頭開始迭代以查找其以前的元素。
希望這會有所幫助。
我在做什麼,當我查看列表時,什麼不是:在遍歷列表時,我將指向前一個元素的指針保存在一個單獨的變量中,如果我決定刪除當前元素,我已經有了指向前一個元素的指針。
因此,僞代碼明智的(更好地說明它),這將是這樣的:
prevValue = NULL
for curValue = root; curValue != NULL; curValue = curValue->Next
LOOP
IF *need to delete curValue*
THEN
IF prevValue == NULL
THEN
root = curValue->Next
delete curValue
curValue = root
ELSE
prevValue->Next = curValue->Next
delete curValue
curValue = prevValue
END IF
END IF
prevValue = curValue
END LOOP
由於每個節點只能有一個鏈接到後續節點,你將不得不遍歷整個列表以獲取前一個元素,然後將前一個節點與下一個節點鏈接起來。 (接下來,再下一個你想刪除)
節點刪除(節點頭,INT d){
if(head==NULL)
cout<<"empty linked list\n";
else {
node*curr=head,*pre=NULL;
while (curr!=NULL && curr->data !=d)
{
pre=curr;
curr=curr->next;
}
if(curr==NULL)
cout<<"Mahloch this number not found\n";
else {
if(pre==NULL)
head=curr->next;
else
pre->next=curr->next;
curr->next=NULL;
delete(curr); }
}return head;
}
提供你的答案描述,這將有助於他人理解你的方法。 – cosmoonot
我想你說的使用while循環是什麼。問題是,我不知道該怎麼做刪除我的節點。 – gonavy96
Node * removeAge = head; \t \t而(removeAge!= NULL) \t \t { \t \t \t如果(test_age_contained_in_singly_linked_list(X)) \t \t \t { \t \t \t \t //這裏的任何想法? \t \t \t} \t \t \t removeAge = removeAge->下; \t \t} – gonavy96
謝謝你的方式,你和大家在這裏做了非常清楚的事情在做什麼!我如何去刪除我的if語句中的節點? – gonavy96