給定一個(gè)有序單鏈表(從小到大有序)的頭結(jié)點(diǎn)head(該結(jié)點(diǎn)有值),刪除鏈表中的重復(fù)元素,使鏈表中的所有元素都只出現(xiàn)一次。如當(dāng)輸入{1,1,2} 時(shí),經(jīng)刪除后,原鏈表變?yōu)?{1,2},對應(yīng)的輸出為 {1,2}。
代碼實(shí)現(xiàn)
C語言代碼:
structListNode*deleteDuplicates(structListNode*head){ if(head==NULL) returnhead; structListNode*p; p=head; while(p->next!=NULL) { if(p->val==p->next->val) p->next=p->next->next; else p=p->next; } returnhead; }
圖解代碼
第一步:定義一個(gè)新結(jié)點(diǎn),將其指向頭結(jié)點(diǎn)

第二步:當(dāng)前結(jié)點(diǎn)的值與當(dāng)前結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)數(shù)值做比較:如果數(shù)值相等,直接將當(dāng)前結(jié)點(diǎn)指向下一個(gè)結(jié)點(diǎn)的next結(jié)點(diǎn);不相等的話繼續(xù)遍歷結(jié)點(diǎn)


第三步:返回頭結(jié)點(diǎn)

-
C語言
+關(guān)注
關(guān)注
183文章
7638瀏覽量
144328 -
代碼
+關(guān)注
關(guān)注
30文章
4932瀏覽量
72850 -
數(shù)據(jù)結(jié)構(gòu)
+關(guān)注
關(guān)注
3文章
573瀏覽量
41280 -
鏈表
+關(guān)注
關(guān)注
0文章
80瀏覽量
10991
原文標(biāo)題:數(shù)據(jù)結(jié)構(gòu):刪除有序鏈表的重復(fù)節(jié)點(diǎn)
文章出處:【微信號:嵌入式攻城獅,微信公眾號:嵌入式攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
講解鏈表的刪除、修改以及插入
C語言實(shí)現(xiàn)單鏈表-增刪改查
數(shù)據(jù)結(jié)構(gòu)中最簡單的鏈表
Linux內(nèi)核的鏈表操作
Linux Kernel數(shù)據(jù)結(jié)構(gòu):鏈表
收藏 | 程序員面試,你必須知道的8大數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)試題庫,含答案
數(shù)據(jù)結(jié)構(gòu)鏈表的基本操作
C語言基礎(chǔ)教程之鏈表
你知道Linux內(nèi)核數(shù)據(jù)結(jié)構(gòu)中雙向鏈表的作用?
淺析LeetCode 83刪除排序鏈表中的重復(fù)元素
Linux內(nèi)核的鏈表數(shù)據(jù)結(jié)構(gòu)
鏈表數(shù)據(jù)結(jié)構(gòu)基本概念
Linux內(nèi)核中使用的數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu):刪除有序鏈表的重復(fù)節(jié)點(diǎn)
評論