刪除單鏈表中的重復(fù)元素

一屹篓、題目描述

????????已知單鏈表L疙渣,寫一算法,刪除其中的重復(fù)節(jié)點(diǎn)堆巧。

二妄荔、分析解答

2.1 知識點(diǎn)分析

????????本題主要考察鏈表的相關(guān)知識點(diǎn)泼菌,其中包括:單鏈表的結(jié)構(gòu)、創(chuàng)建啦租、遍歷哗伯、刪除等操作。要想熟練的使用鏈表篷角,必須對這些有著清楚的認(rèn)識焊刹。
  鏈表是線性結(jié)構(gòu)的一種物理實(shí)現(xiàn),除此之外内地,線性結(jié)構(gòu)還可以使用順序存儲結(jié)構(gòu)來實(shí)現(xiàn)。順序存儲是使用內(nèi)存中的一塊地址連續(xù)空間順序存放線性表中的每一個元素赋除,每個元素在物理上相鄰阱缓,而鏈?zhǔn)酱鎯Y(jié)構(gòu)則不會要求物理上的元素相鄰,它通過節(jié)點(diǎn)的指針域指向下一個元素举农。
  線性結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)的幾種常見邏輯結(jié)構(gòu)之一荆针,在數(shù)據(jù)結(jié)構(gòu)中,常見的邏輯結(jié)構(gòu)有:集合結(jié)構(gòu)颁糟、線性結(jié)構(gòu)航背、樹結(jié)構(gòu)、圖結(jié)構(gòu)棱貌。這幾種邏輯結(jié)構(gòu)玖媚,如果要在計(jì)算機(jī)上實(shí)現(xiàn)出來,可以采用順序存儲結(jié)構(gòu)婚脱、鏈?zhǔn)酱鎯Y(jié)構(gòu)今魔、索引結(jié)構(gòu)、散列結(jié)構(gòu)四種障贸。從理論上講错森,任何一種邏輯結(jié)構(gòu)都可以采用任何一種物理結(jié)構(gòu)來實(shí)現(xiàn)。
  在單鏈表的創(chuàng)建過程中篮洁,根據(jù)新元素插入位置的不同涩维,可以有頭插法和尾插法兩種。這兩種創(chuàng)建方式創(chuàng)建出來的單鏈表在性質(zhì)上沒有什么不同袁波。
  為了方便單鏈表元素的統(tǒng)一操作瓦阐,也可以在單鏈表的頭部附加一個結(jié)點(diǎn),我們稱之為 頭結(jié)點(diǎn)篷牌。頭結(jié)點(diǎn)中的數(shù)據(jù)域可以存放和鏈表有關(guān)的信息垄分,例如節(jié)點(diǎn)的個數(shù)。要注意頭結(jié)點(diǎn)和頭指針在邏輯上的區(qū)別娃磺,鏈表中第一個正式數(shù)據(jù)元素的節(jié)點(diǎn)叫做首元結(jié)點(diǎn)薄湿,在此節(jié)點(diǎn)之前附加的一個節(jié)點(diǎn)叫做頭結(jié)點(diǎn),頭結(jié)點(diǎn)中數(shù)據(jù)域存儲的信息在性質(zhì)上和鏈表中數(shù)據(jù)元素節(jié)點(diǎn)中數(shù)據(jù)域存儲的內(nèi)容不同,頭指針是指向整個鏈表中的第一個節(jié)點(diǎn)的地址豺瘤,可能是頭結(jié)點(diǎn)的地址吆倦,也可能會是首元結(jié)點(diǎn)的地址。

2.2 代碼分析

#include<stdio.h>
#include<stdlib.h>
 
typedef struct node{
 
    int data;
 
    struct node *next;
 
}Node,*PNode;
 
//頭插法建立帶有頭結(jié)點(diǎn)的單鏈表
PNode creat_list(){
 
    //申請頭結(jié)點(diǎn)
    PNode head = (PNode)malloc(sizeof(Node));
 
    head->next = NULL;
    scanf("%d",&(head->data)); // 頭結(jié)點(diǎn)的數(shù)據(jù)域可以存放總結(jié)點(diǎn)數(shù)
 
    //新增元素
    PNode p =  NULL;
    int i;
    for(i=0;i<(head->data);i++){
    
        p = (PNode)malloc(sizeof(Node));
 
        scanf("%d",&(p->data));
        
        //這是頭插法的關(guān)鍵所在
        p->next = head->next;
        head->next = p;
 
    }
    return head;
 
}
 
//刪除重復(fù)節(jié)點(diǎn)
void del_repeated_node(PNode head){
 
 
    PNode k = head->next, pre_p = k,  p = pre_p->next;
 
    //遍歷單鏈表的每一個節(jié)點(diǎn)
    while(k && k->next != NULL){
    
            //判斷k后面的節(jié)點(diǎn)是否與k的值域重復(fù)坐求,如果重復(fù)蚕泽,則刪去。
            while(p){
 
                    if(k->data == p->data){
                       //刪除重復(fù)的p節(jié)點(diǎn)
                        PNode temp = p;
                        pre_p ->next= p->next;
                        p = pre_p->next;
                        
                        free(temp);
                    }else{
                    
                        pre_p = pre_p->next;
                        p = pre_p->next;
                    }
            }
    
     k = pre_p = k->next;
     p = pre_p->next;
    }
 
}
 
 
  void print_list(PNode head){
 
        PNode p = head->next;
 
        while(p){
        
            printf("p->data: %d \t",p->data);
 
            p = p->next;
        
        }
        printf("\n");
 
}
 
  int main(){
  
      PNode head = creat_list();
 
      print_list(head);
 
      del_repeated_node(head);
 
      print_list(head);
 
      return 0;
  
  
  }

2.3 結(jié)果截圖

結(jié)果.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桥嗤,一起剝皮案震驚了整個濱河市须妻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌泛领,老刑警劉巖荒吏,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異渊鞋,居然都是意外死亡绰更,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門锡宋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來儡湾,“玉大人,你說我怎么就攤上這事执俩⌒炷疲” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵役首,是天一觀的道長丹皱。 經(jīng)常有香客問我,道長宋税,這世上最難降的妖魔是什么摊崭? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮杰赛,結(jié)果婚禮上呢簸,老公的妹妹穿的比我還像新娘。我一直安慰自己乏屯,他們只是感情好根时,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辰晕,像睡著了一般蛤迎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上含友,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天替裆,我揣著相機(jī)與錄音校辩,去河邊找鬼。 笑死辆童,一個胖子當(dāng)著我的面吹牛宜咒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播把鉴,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼故黑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了庭砍?” 一聲冷哼從身側(cè)響起场晶,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怠缸,沒想到半個月后诗轻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凯旭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年概耻,在試婚紗的時候發(fā)現(xiàn)自己被綠了使套。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罐呼。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖侦高,靈堂內(nèi)的尸體忽然破棺而出嫉柴,到底是詐尸還是另有隱情,我是刑警寧澤奉呛,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布计螺,位于F島的核電站,受9級特大地震影響瞧壮,放射性物質(zhì)發(fā)生泄漏登馒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一咆槽、第九天 我趴在偏房一處隱蔽的房頂上張望陈轿。 院中可真熱鬧,春花似錦秦忿、人聲如沸麦射。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽潜秋。三九已至,卻和暖如春胎许,著一層夾襖步出監(jiān)牢的瞬間峻呛,已是汗流浹背罗售。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杀饵,地道東北人莽囤。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像切距,于是被迫代替她去往敵國和親朽缎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容