給定一個(gè)有序單鏈表(從小到大有序)的頭結(jié)點(diǎn)head(該結(jié)點(diǎn)有值),刪除鏈表中的重復(fù)元素,使鏈表中的所有元素都只出現(xiàn)一次。如當(dāng)輸入{1,1,2} 時(shí),經(jīng)刪除后,原鏈表變?yōu)?{1,2},對(duì)應(yīng)的輸出為 {1,2}。
代碼實(shí)現(xiàn)
C語(yǔ)言代碼:
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)
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
C語(yǔ)言
-
代碼
-
數(shù)據(jù)結(jié)構(gòu)
-
鏈表
原文標(biāo)題:數(shù)據(jù)結(jié)構(gòu):刪除有序鏈表的重復(fù)節(jié)點(diǎn)
文章出處:【微信號(hào):嵌入式攻城獅,微信公眾號(hào):嵌入式攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
相關(guān)推薦
上期介紹了動(dòng)態(tài)鏈表怎么建立,以及使用循環(huán)的方式怎么輸出整個(gè)鏈表中各個(gè)節(jié)點(diǎn)的數(shù)據(jù),這期主要講解 鏈表的刪除
發(fā)表于 01-13 15:25
?2123次閱讀
鏈表是由一連串節(jié)點(diǎn)組成的數(shù)據(jù)結(jié)構(gòu),每個(gè)節(jié)點(diǎn)包含一個(gè)數(shù)據(jù)值和一個(gè)指向下一個(gè)節(jié)點(diǎn)的指針。
發(fā)表于 05-25 15:05
?1125次閱讀
數(shù)據(jù)結(jié)構(gòu)作為嵌入式工程師必修課程之一,今天,我們就來(lái)講一講數(shù)據(jù)結(jié)構(gòu)中最簡(jiǎn)單的鏈表,包含鏈表的初始化、插入和遍歷操作。 鏈表在項(xiàng)目開發(fā)中使用的
發(fā)表于 06-13 17:40
?335次閱讀
Linux內(nèi)核的鏈表操作本文詳細(xì)分析了 2.6.x 內(nèi)核中鏈表結(jié)構(gòu)的實(shí)現(xiàn),并通過(guò)實(shí)例對(duì)每個(gè)鏈表操作接口進(jìn)行了詳盡的講解。一、 鏈表
發(fā)表于 08-29 11:13
Linux Kernel數(shù)據(jù)結(jié)構(gòu):鏈表原創(chuàng) 2016年10月20日 22:58:25標(biāo)簽:LINUX/kernel/鏈表 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)中
發(fā)表于 09-25 16:41
是另一個(gè)重要的線性數(shù)據(jù)結(jié)構(gòu),乍一看可能有點(diǎn)像數(shù)組,但在內(nèi)存分配、內(nèi)部結(jié)構(gòu)以及數(shù)據(jù)插入和刪除的基本操作方面均有所不同。鏈表就像一個(gè)
發(fā)表于 09-30 09:35
;next=s;C. s->next=p->next;p=s;7. 設(shè)線性鏈表中的節(jié)點(diǎn)的結(jié)構(gòu)為(data, next),若想刪除節(jié)點(diǎn)p的直接
發(fā)表于 03-07 16:19
嵌入式學(xué)習(xí)基礎(chǔ)-數(shù)據(jù)結(jié)構(gòu)鏈表的基本操作鏈表節(jié)點(diǎn)采用結(jié)構(gòu)體的方式進(jìn)行定義,下面是最基礎(chǔ)的定義只有一個(gè)數(shù)據(jù)
發(fā)表于 12-22 08:05
成員,那么到時(shí)候鏈表中沒(méi)有任何數(shù)據(jù),這樣的鏈表有什么用呢?其實(shí)這就是內(nèi)核鏈表設(shè)計(jì)的巧妙之處,因?yàn)樵谡麄€(gè)內(nèi)核中需要使用鏈表來(lái)存放的
發(fā)表于 04-20 16:42
第三章為算法與數(shù)據(jù)結(jié)構(gòu),本文為3.3 雙向鏈表。
發(fā)表于 09-19 17:56
?7231次閱讀
Linux 內(nèi)核提供一套雙向鏈表的實(shí)現(xiàn),你可以在 include/linux/list.h 中找到。我們以雙向鏈表著手開始介紹 Linux 內(nèi)核中的數(shù)據(jù)結(jié)構(gòu) ,因?yàn)檫@個(gè)是在 Linux 內(nèi)核中使用最為廣泛的
發(fā)表于 05-14 17:27
?1852次閱讀
給定一個(gè)已排序的鏈表的頭 head , 刪除所有重復(fù)的元素,使每個(gè)元素只出現(xiàn)一次 。返回 已排序的鏈表 。
發(fā)表于 02-06 10:25
?675次閱讀
Linux內(nèi)核實(shí)現(xiàn)了自己的鏈表數(shù)據(jù)結(jié)構(gòu),它的設(shè)計(jì)與傳統(tǒng)的方式不同,非常巧妙也很通用。
發(fā)表于 03-24 11:34
?792次閱讀
的必要元素。 頭節(jié)點(diǎn): 頭結(jié)點(diǎn)是為了操作的統(tǒng)一和方便而設(shè)立的,放在第一元素的結(jié)點(diǎn)之前,其數(shù)據(jù)域一般無(wú)意義(也可存放鏈表的長(zhǎng)度)。 有了頭結(jié)點(diǎn),對(duì)在第一元素結(jié)點(diǎn)前插入結(jié)點(diǎn)和刪除第一結(jié)點(diǎn),
發(fā)表于 07-27 11:14
?752次閱讀
包含的元素可以動(dòng)態(tài)創(chuàng)建并插入和刪除。鏈表的每個(gè)元素都是離散存放的,因此不需要占用連續(xù)的內(nèi)存。鏈表通常由若干節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)的
發(fā)表于 11-09 14:24
?412次閱讀
評(píng)論