第十八題,(第二道題目),題目如下:
思路分析:需要三個指標分別指向當前節點,當前節點的前乙個節點,當前節點的後乙個節點,初始時當前節點為鍊錶第乙個節點,判斷當前節點與當前節點的後乙個節點是否相等,以此尋找要刪除的節點位置。找到後進行刪除,若第乙個節點就開始重複需要把頭結點更改故用指向指標的指標。若不是則把當前節點的前乙個節點最終指向當前節點的下乙個節點完成鍊錶刪除。
#include #include #include using namespace std;
struct listnode ;
listnode* create(int n)
return head->m_pnext;
}void delete(listnode** listhead)
else
if (prenode == nullptr)//首節點為重複節點的情況
* listhead = pnext;
else
prenode->m_pnext = pnext;
node = pnext;
} }}void print(listnode * p)
}int main()
鍊錶 刪除鍊錶中重複的節點
刪除鍊錶中重複的節點 方法一 採用遞迴的方法,但這種方法在鍊錶無重複節點時效率不高 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...