本文是在學習中的總結,歡迎轉載但請注明出處:http://blog.csdn.net/pistolove/article/details/41728739
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
思路:
(1)題意為移除已排序鏈表中重復元素。
(2)首先,對頭結點進行判空,為空則返回空。不為空設定first指向head。
(3)其次,判斷first的后續節點second是不是為空,如果不為空,則比較它們值是不是相同。如果值不同,則節點first指向second,
second指向first的后續節點,循環繼續;如果值相同,設置節點last指向second的后續節點,如果last不為空,并且last的值
和first的值相同(說明連續3個節點值相同),last指向其后續節點,循環直到ast為空或first的值和last的值不同,此時,
如果last不為空,則first的后續節點為last,first指向last,second指向first的后續位置,循環繼續,如果last為空,說明已
遍歷到最后節點,此first的后續節點指向null,返回head。
(4)其指向進程可以簡單以下所示:
例如:1->1->2->3->3->3->4->5->5->5
(A)first=1,second=1,first=second,則last=2,由于first!=last,所以first=2,second=3;
(B)first=2,second=3,first!=second,則first=3,second=3;
(C)first=3,second=3,first=second,則last=3,由于first=last,循環直到last==null或first!=last,此時last=4,則first=4,second=5;
(D)first=4,second=5,first!=second,則first=5,last=5;
(E)first=5,last=5,first=second,last=5,由于first=last,循環直到last==null或first!=last,此時last=null,則first.next=null,返回head。
算法代碼實現以下:
上一篇 設計模式之橋接模式
下一篇 程序員怎能不知道什么是數據挖掘