刪除鍊錶中的重複出現的結點,留下只出現一次的結點

2021-09-24 16:17:18 字數 1201 閱讀 3859

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。

例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5

題目分析:

有序鍊錶相鄰的元素必然在一起,比較鍊錶元素的值。

分析過程

遞迴方法

注意

考慮當鍊表為空時,和鍊錶只有乙個節點時的情況

注意cur && phead->val==cur->val這個條件,對於結點重複兩次以上,有很重要的作用。

/*

struct listnode

};*/

class solution

listnode* cur;

if(phead->val == phead->next->val)

return deleteduplication(cur);

}else}};

非遞迴方法過程如圖:

注意

解釋一下,為什麼最後不返回phead,因為如果頭結點就是重複的呢,那刪除了以後,就找不到phead這個頭了,所以,新建的乙個結點來作為頭,這個新的頭的下乙個節點始終是鍊錶的頭結點。

class solution 

listnode* head=new listnode(0);

head->next=phead;

listnode* prev=head;

listnode* cur=head->next;

while(cur)

prev->next=cur->next;

cur=cur->next;

}else

}return head->next;}};

刪除有序鍊錶中重複出現的元素

給出乙個公升序排序的鍊錶,刪除鍊錶中的所有重複出現的元素,只保留原煉表中只出現一次的元素。例如 給出的鍊錶為1 2 3 3 4 4 5,返回1 2 5.給出的鍊錶為1 1 1 2 3,返回2 3.struct listnode class solution listnode phead new li...

刪除鍊錶中的所有重複出現的元素

刪除給出鍊錶中的重複元素 鍊錶中元素從小到大有序 使煉表中的所有元素都只出現一次 例 1 1 1 2 3,返回2 3 思路 1,如果下乙個節點和當前節點值相同,則刪除下乙個節點 刪除步驟 1.1,當前節點的下乙個為下乙個節點的下乙個 1.2,下乙個節點指向當前節點的下乙個 2,如果下乙個節點和當前節...

刪除鍊錶中重複的結點

題目描述 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5。刪除鍊錶中重複的結點 author 過路的守望 public class duplicationnode 新建乙個節點指向頭結點 li...