刪除鍊錶中重複的節點

2021-10-04 18:58:53 字數 841 閱讀 6847

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5

解題思路:

建立三個指標遍歷鍊錶

如果後面兩個指標指向的內容一致,則將最後乙個指標的指向內容刪除,並將指標後移,直到不一樣,刪除中間指標的內容

遍歷完整個鍊錶

實現**:

listnode* deleteduplication(listnode* phead) 

struct listnode* start = (struct listnode*) malloc (sizeof (struct listnode));

struct listnode* prev ,*cur,*next,*del;

start->next = phead;

cur = phead;

next = cur->next;

prev = start;

while(next)

del = cur;

prev->next = next;

cur = next ;

free(del);

if(next == null)

next = next->next;

}else

}phead = start->next;

free(start);

return phead;

}

執行結果:

鍊錶 刪除鍊錶中重複的節點

刪除鍊錶中重複的節點 方法一 採用遞迴的方法,但這種方法在鍊錶無重複節點時效率不高 function deleteduplication phead if phead.val phead.next.val return deleteduplication node 採用遞迴的方法從下乙個不重複的點開...

鍊錶 刪除鍊錶中重複的節點

刪除鍊錶中重複的節點 方法一 採用遞迴的方法,但這種方法在鍊錶無重複節點時效率不高 function deleteduplication phead if phead.val phead.next.val return deleteduplication node 採用遞迴的方法從下乙個不重複的點開...

刪除鍊錶中重複的節點

題目描述 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 這個題目首先考慮到頭結點也可能是重複的節點,所以需要設定乙個頭結點之前的節點。之後需要3個指標 pre,cur和next struct...