• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    C語言中指針鏈表的學(xué)習(xí)探討

    2013-08-14 02:13劉山根
    關(guān)鍵詞:鏈表數(shù)組數(shù)據(jù)結(jié)構(gòu)

    摘 要:指針鏈表是一種最簡(jiǎn)單也是最常用的動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),它是對(duì)動(dòng)態(tài)獲得的內(nèi)存進(jìn)行組織的一種結(jié)構(gòu)。本文通過教學(xué)實(shí)踐,通過圖示法從基本概念的理解入手,并深入講解動(dòng)態(tài)鏈表的建立,插入和刪除,在教學(xué)過程中起到了良好的效果。

    關(guān)鍵詞:動(dòng)態(tài);鏈表

    中圖分類號(hào):TP311.12

    C語言中存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)用的最普遍的是數(shù)組,包括簡(jiǎn)單類型的數(shù)組,指針數(shù)據(jù)和結(jié)構(gòu)體數(shù)組等,但是他們?cè)趯?shí)際應(yīng)用中,會(huì)因?yàn)閷?shí)現(xiàn)定義過大的數(shù)組容量而造成內(nèi)存的浪費(fèi),或者因?yàn)楸J氐念A(yù)測(cè)分配而滿足不了實(shí)際使用的要求,這時(shí)就需要另一種方法來解決這個(gè)問題,這就是動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)和動(dòng)態(tài)分配內(nèi)存技術(shù)。鏈表就是這樣一種最簡(jiǎn)單的動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)。那么如何讓學(xué)生能夠很好的學(xué)習(xí)并掌握它,本人就近幾年的教學(xué)過程中經(jīng)過探討,采用了圖示法進(jìn)行教學(xué),效果很好。

    1 基本概念的理解

    1.1 指針的理解

    (1)指針與簡(jiǎn)單變量。通過圖1所示理解指針與簡(jiǎn)單變量的關(guān)系,當(dāng)把變量i的地址存入指針變量p1后,就可以說這個(gè)指針指向了該變量。

    如需要指向下一個(gè)元素,只需要指針往后移動(dòng)即可!

    1.2 結(jié)構(gòu)體的理解

    (1)結(jié)構(gòu)體類型。結(jié)構(gòu)體類型是一種專門組織和處理復(fù)雜關(guān)系的數(shù)據(jù)結(jié)構(gòu),是一種自定義類型。同一個(gè)數(shù)據(jù)對(duì)象由于應(yīng)用不同定義的類型也有所不同。比如處理學(xué)生的信息,可以有很多種方式:

    結(jié)構(gòu)體中的成員名可增,可減,形成新的結(jié)構(gòu)體類型。

    (2)結(jié)構(gòu)體變量與數(shù)組。以上是結(jié)構(gòu)體類型的定義,變量定義方式有三種,這里不一一舉例,可根據(jù)自己的個(gè)人習(xí)慣選擇不同的定義方式。比如上面兩個(gè)類型,分別定義簡(jiǎn)單變量,可這樣定義:

    struct student s1,s2; struct stu s3,s4;

    如定義數(shù)組,結(jié)合前面所學(xué)數(shù)組的知識(shí),可這樣定義:

    struct student s[10]; struct stu s1[20];

    2 指針鏈表

    掌握了前面指針和結(jié)構(gòu)體的知識(shí)內(nèi)容,對(duì)于指針鏈表的理解和掌握是非常重要的。

    2.1 指針鏈表的定義

    這里主要講解單項(xiàng)鏈表結(jié)點(diǎn)的結(jié)構(gòu)體類型的定義,對(duì)于初學(xué)者掌握了這種定義,對(duì)于以后學(xué)習(xí)更為復(fù)雜的鏈表知識(shí)的理解是很有幫助的。

    單項(xiàng)鏈表結(jié)點(diǎn)的定義:

    struct node

    {

    int data; //存放的數(shù)據(jù),可以定義其他更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)

    struct node *next; //指向struct node類型數(shù)據(jù),用此建立鏈表

    };

    2.2 指針鏈表的建立

    定義好類型后,再定義變量,并將鏈表建立起來,形成整數(shù)數(shù)據(jù)按升序建立的數(shù)據(jù)鏈,下面通過函數(shù)create來實(shí)現(xiàn)鏈表的建立。

    struct node *create()

    {

    struct node *head,*p,*q,num;

    head=NULL;

    scanf("%d",&num;);

    while(num!=0)

    {

    p=(struct node *)malloc(sizeof(struct node ));

    if(p==NULL)

    {

    printf("Allocation failure\n");

    exit(0);

    }

    p->data=num;

    p->next=NULL;

    if(head==NULL)

    head=p;

    else

    q->next=p;

    q=p;

    }

    return head;

    }

    2.3 指針鏈表的插入

    鏈表建立完成后,最常用的操作之一就是對(duì)鏈表的數(shù)據(jù)進(jìn)行增加,也就是插入操作,具體程序通過insert函數(shù)實(shí)現(xiàn)。

    struct node*insert(struct node*head,sturct node*r,int*x)

    {

    struct nod *p,*q;

    if(head==NULL)

    {

    head=r;

    r->next=NULL;

    }

    else

    {

    p=head;

    while(*x>p->data&&p-;>next!=NULL)

    {

    q=p;

    p=p->next;

    }

    if(*xdata)

    {

    if(p==head)

    head=r;

    else

    q->next=r;

    p->next=p;

    }

    else

    if(p==NULL)

    {

    p->next=r;

    r->next=NULL;

    }

    return head;

    }

    2.4 指針鏈表的刪除

    對(duì)于鏈表中數(shù)據(jù)的刪除也是鏈表數(shù)據(jù)中操作的重點(diǎn),具體實(shí)現(xiàn)過程通過函數(shù)deletenode實(shí)現(xiàn)。

    struct node*deletenode(struct node*head,int*x)

    {

    struct nod*p,*q;

    if(head==NULL)

    {

    printf("This is a empty list.");

    return head;

    }

    p=head;

    while(*x!=p->data&&p-;>next!=NULL)

    {

    q=p;

    p=p->next;

    }

    if(*x==p->data)

    {

    if(p==head)

    head=p->next;

    else

    q->next=p->next;

    free(p);

    }

    else

    printf("NOT FOUND");

    return head;

    }

    3總結(jié)

    單向結(jié)點(diǎn)鏈表的主要操作就是建立,插入和刪除數(shù)據(jù),而且是鏈表當(dāng)中最簡(jiǎn)單的一種形式,只有理解和掌握單向結(jié)點(diǎn)鏈表的基本操作,才有可能處理更為復(fù)雜的數(shù)據(jù)對(duì)象,在課堂上通過以上三個(gè)函數(shù)的編寫與引導(dǎo),學(xué)生對(duì)于鏈表有了初步的認(rèn)識(shí),并起到了良好的效果。

    參考文獻(xiàn)

    [1]杜友福.C語言程序設(shè)計(jì)[M].北京:科學(xué)出版社,2012.

    [2]龔民,朱秀蘭.C語言程序設(shè)計(jì)教學(xué)探討[J].電腦知識(shí)與技術(shù),2009.

    作者簡(jiǎn)介:劉山根(1976.8-),男,籍貫:河南新鄉(xiāng),職務(wù):廣東省華僑職業(yè)技術(shù)學(xué)校教務(wù)科副科長(zhǎng)。

    猜你喜歡
    鏈表數(shù)組數(shù)據(jù)結(jié)構(gòu)
    JAVA稀疏矩陣算法
    JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
    基于二進(jìn)制鏈表的粗糙集屬性約簡(jiǎn)
    基于鏈表多分支路徑樹的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
    Excel數(shù)組公式在林業(yè)多條件求和中的應(yīng)用
    “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
    尋找勾股數(shù)組的歷程
    鏈表方式集中器抄表的設(shè)計(jì)
    TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
    《數(shù)據(jù)結(jié)構(gòu)》教學(xué)方法創(chuàng)新探討
    大冶市| 岳西县| 同心县| 吉林市| 金川县| 万源市| 连平县| 渭源县| 元氏县| 清水河县| 安福县| 大城县| 泌阳县| 手游| 云林县| 黄陵县| 商城县| 扎囊县| 道真| 稻城县| 鲜城| 四会市| 阿图什市| 城固县| 荔波县| 三门县| 桓仁| 乌鲁木齐市| 屏南县| 邢台市| 南丹县| 泸水县| 大埔区| 富川| 凤庆县| 嘉善县| 桑日县| 永定县| 武汉市| 大港区| 深圳市|