【我的漫漫考研路】數(shù)據(jù)結(jié)構(gòu)之單鏈表線性存儲實現(xiàn) Beta

正文之前

昨天晚上階段性的完成了一部分數(shù)學(xué)的復(fù)習(xí)利职,所以今天打算擼一擼代碼趣效,然后發(fā)現(xiàn)提電腦忘指針。所以自己磕磕盼盼猪贪,對照了一下網(wǎng)上的代碼跷敬,總算把線性存儲單鏈表的數(shù)據(jù)類型實現(xiàn),給自己寫出來了热押。
廢話不多說西傀,我也不排版,大家自己好好看桶癣,有疑問的在下面評論交流拥褂。

正文

一覺醒來,世界都有了變化牙寞,上午的焦慮不翼而飛~
下午重新審視了下代碼饺鹃,發(fā)現(xiàn)了鏈表的頭插法和尾插法的區(qū)別:
頭插法是在已經(jīng)形成的鏈表的頭部插入一個數(shù)據(jù)塊,尾插法是在已經(jīng)形成的鏈表的尾部插入一個數(shù)據(jù)塊~
那么你看我的代碼碎税,是用的頭還是尾呢尤慰?(溫馨提示:不要看head是頭就回答我哦~)

//main.c
//  ZhiZhen
//
//  Created by 張照博 on 2017/8/10.
//  Copyright ? 2017年 HustWolf. All rights reserved.
//

#define Length 6;
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
    int data;
    struct LNode *next;
    
} LNode, *LinkList;


LinkList InitList()
{
    int num;
    LNode *L;
    L=(LinkList)malloc(sizeof(LNode));
    LinkList head=L;
    int len=Length;
    for(int i=0;i<len;++i)
    {
        LinkList p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&num);
        if(p == NULL)
        {
            printf("初始化失敗!\n");
            exit(-1);
        }
        p->data=num;
        printf("%d hia~\n",p->data);
        p->next=head->next;
        head->next=p;
        head=p;
        
    }
    return L;
}

void Insert(LinkList L,int i,int number)
{
    int len=Length;
    if(i>len){
        printf("Fuck U Dicks");
        exit(-1);
    }
    LinkList p;
    
    int Location=i-1;
    p=L;
    while(Location--)
    {
        p=p->next;
    }

    LinkList s=(LinkList)malloc(sizeof(LNode));
    s->data=number;
    s->next=p->next;
    p->next=s;

}

int main()
{
    LinkList X;
    X=InitList();
    int len=Length;
    Insert(X,2,45);
    printf("\n");
    ++len;
    while(len--)
    {
        printf("%d\t",X->next->data);
        X=X->next;
    }
    return 0;
}


運行結(jié)果

實話實說:我的是尾插法,沒錯雷蹂,我自己一直以為是頭伟端,結(jié)果是尾巴,是的匪煌,沒錯责蝠,每一次head指針都會移位,那么也就是說萎庭,head其實是個假的頭指針霜医,實際上它是個尾指針,專門指向目前的最后一個數(shù)據(jù)塊驳规。L指針才是真正的BOSS頭指針k攘病!

下面是我補上的頭插法的內(nèi)容:

LinkList InitListTou()//頭插法
{
    int num;
    LNode *L;
    L=(LinkList)malloc(sizeof(LNode));
    LinkList trial=L;
    int len=Length;
    for(int i=0;i<len;++i)
    {
        LinkList p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&num);
        if(p == NULL)
        {
            printf("初始化失敗!\n");
            exit(-1);
        }
        p->data=num;
        printf("%d hia~\n",p->data);
        trial->next=p;
        trial=p;
        
    }
    return L;
}

跑起來一樣66的~

很悲傷的發(fā)現(xiàn)吗购,野路子就是野路子医男,鏈表的頭指針要在main中定義是有道理的,不然我也不會花了一個寶貴的下午來算這個東西捻勉,真是悲傷岸扑蟆!~~u馄簟1ㄕ恕研底!
下面是完整版的改過的代碼,跟上面聯(lián)系基本不大了透罢,新增了Merge和Delete函數(shù)榜晦,然后主函數(shù)有了點變化,大家自行觀察~

//
//  main.c
//  ZhiZhen
//
//  Created by 張照博 on 2017/8/10.
//  Copyright ? 2017年 HustWolf. All rights reserved.
//

#define Length 4;
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
    int data;
    struct LNode *next;
    
} LNode, *LinkList;


void InitList(LinkList head)//尾插法
{
    int num;
    int len=Length;
    for(int i=0;i<len;++i)
    {
        LinkList p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&num);
        if(p == NULL)
        {
            printf("初始化失敗!\n");
            exit(-1);
        }
        p->data=num;
        printf("%d hi~\n",p->data);
        p->next=head->next;
        head->next=p;
        head=p;
        
    }
    head->next = NULL;
}

LinkList InitListTou()//頭插法
{
    int num;
    LNode *L;
    L=(LinkList)malloc(sizeof(LNode));
    LinkList trial=L;
    int len=Length;
    for(int i=0;i<len;++i)
    {
        LinkList p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&num);
        if(p == NULL)
        {
            printf("初始化失敗!\n");
            exit(-1);
        }
        p->data=num;
        printf("%d hia~\n",p->data);
        trial->next=p;
        trial=p;
        
    }
    trial->next = NULL;
    return L;
}

void Insert(LinkList L,int i,int number)
{
    int len=Length;
    if(i>len){
        printf("Fuck U Dicks");
        exit(-1);
    }
    LinkList p;
    
    int Location=i-1;
    p=L;
    while(Location--)
    {
        p=p->next;
    }
    
    LinkList s=(LinkList)malloc(sizeof(LNode));
    s->data=number;
    s->next=p->next;
    p->next=s;
    
}

void Merge(LinkList l,LinkList x,int td)
{
    LinkList a=l->next;
    LinkList b=x->next;
    LinkList m,M;
    m=l;
    M=l;
    while(b!= NULL && a!= NULL)
    {
        if (a->data > b->data)
        {
            m->next=a;
            m=m->next;
            a=a->next;
        }
        else{
            m->next=b;
            m=m->next;
            b=b->next;
        }
        //  m->next=(l->next->data>x->next->data?(l=l->next):(x=x->next));
    }
    m->next=a?a:b;
    LinkList Ta=M->next;
    int out;
    printf("Merge:\n");
   while(Ta)
    {   out =Ta->data;
        Ta=Ta->next;
        printf("%d\t",out);
        
    }
    free(b);
}

int main()
{
    LinkList X=(LinkList)malloc(sizeof(LNode));
    LinkList Y=(LinkList)malloc(sizeof(LNode));
    InitList(X);
    InitList(Y);
    int td=1;
    Merge(X,Y,td);
    return 0;
}

運行結(jié)果:

14
14 hi~
432
432 hi~
456
456 hi~
578
578 hi~
123
123 hi~
545
545 hi~
634
634 hi~
4244
4244 hi~
Merge:
123 545 634 4244    14  432 456 578 Program ended with exit code: 0

正文之后

雖說不說廢話琐凭,但是我還是想問一下芽隆,各位,覺得下面哪個寫碼的環(huán)境好一點统屈?我個人比較偏向于第一個的UI胚吁,但是第二個,報錯報得更好愁憔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腕扶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吨掌,更是在濱河造成了極大的恐慌半抱,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膜宋,死亡現(xiàn)場離奇詭異窿侈,居然都是意外死亡,警方通過查閱死者的電腦和手機秋茫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門史简,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肛著,你說我怎么就攤上這事圆兵。” “怎么了枢贿?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵殉农,是天一觀的道長。 經(jīng)常有香客問我局荚,道長超凳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任耀态,我火速辦了婚禮轮傍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘茫陆。我一直安慰自己金麸,他們只是感情好擎析,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布簿盅。 她就那樣靜靜地躺著挥下,像睡著了一般。 火紅的嫁衣襯著肌膚如雪桨醋。 梳的紋絲不亂的頭發(fā)上棚瘟,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機與錄音喜最,去河邊找鬼偎蘸。 笑死,一個胖子當(dāng)著我的面吹牛瞬内,可吹牛的內(nèi)容都是我干的迷雪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼虫蝶,長吁一口氣:“原來是場噩夢啊……” “哼章咧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起能真,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤赁严,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粉铐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疼约,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年蝙泼,在試婚紗的時候發(fā)現(xiàn)自己被綠了程剥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡踱承,死狀恐怖倡缠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茎活,我是刑警寧澤昙沦,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站载荔,受9級特大地震影響盾饮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜懒熙,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一丘损、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧工扎,春花似錦徘钥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舆驶。三九已至,卻和暖如春而钞,著一層夾襖步出監(jiān)牢的瞬間沙廉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工臼节, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留撬陵,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓网缝,卻偏偏與公主長得像巨税,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粉臊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354

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