亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2013-08-14 02:13:48劉山根
        計算機光盤軟件與應(yīng)用 2013年10期
        關(guān)鍵詞:鏈表數(shù)組數(shù)據(jù)結(jié)構(gòu)

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

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

        中圖分類號:TP311.12

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

        1 基本概念的理解

        1.1 指針的理解

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

        如需要指向下一個元素,只需要指針往后移動即可!

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

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

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

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

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

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

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

        2 指針鏈表

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

        2.1 指針鏈表的定義

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

        單項鏈表結(jié)點的定義:

        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來實現(xiàn)鏈表的建立。

        struct node *create()

        {

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

        head=NULL;

        scanf("%d",#);

        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 指針鏈表的插入

        鏈表建立完成后,最常用的操作之一就是對鏈表的數(shù)據(jù)進行增加,也就是插入操作,具體程序通過insert函數(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 指針鏈表的刪除

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

        參考文獻

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

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

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

        猜你喜歡
        鏈表數(shù)組數(shù)據(jù)結(jié)構(gòu)
        JAVA稀疏矩陣算法
        電腦報(2022年13期)2022-04-12 00:32:38
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        電腦報(2020年24期)2020-07-15 06:12:41
        基于二進制鏈表的粗糙集屬性約簡
        跟麥咭學(xué)編程
        基于鏈表多分支路徑樹的云存儲數(shù)據(jù)完整性驗證機制
        “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
        高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
        中國市場(2016年45期)2016-05-17 05:15:48
        尋找勾股數(shù)組的歷程
        鏈表方式集中器抄表的設(shè)計
        電測與儀表(2014年1期)2014-04-04 12:00:22
        TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
        91人妻人人做人人爽九色| 精品国产三级a∨在线观看| 四虎精品成人免费观看| 日韩av在线不卡观看| 国产成人精品人人做人人爽97 | 一本色道久久88综合亚洲精品| 偷拍色图一区二区三区| 被黑人猛烈30分钟视频| 啪啪免费网站| 国产精品一区二区久久精品蜜臀| 日本熟女精品一区二区三区| 草草浮力影院| 9999毛片免费看| 色婷婷综合一区二区精品久久 | 久久久精品国产亚洲av网不卡| 蜜桃视频国产一区二区| 无码av天堂一区二区三区| 亚洲区在线播放| 日本成年少妇人妻中文字幕 | 免费人成黄页在线观看视频国产| 日韩精品一区二区三区四区视频 | 日本丰满少妇裸体自慰| 18禁无遮挡羞羞污污污污网站| 亚洲欧美日韩中文综合在线不卡| 男女啪啪在线视频网站| 国产乱人伦av在线a麻豆| 亚洲人成无码网www| 亚洲综合原千岁中文字幕| 丰满精品人妻一区二区| 免费99精品国产自在在线| 欧美日韩中文字幕久久伊人| 久久精品一区一区二区乱码| 亚洲国产aⅴ成人精品无吗| 久久国产36精品色熟妇| 福利一区二区三区视频在线| 视频在线国产一区二区| 亚洲av日韩专区在线观看| 精品久久久久久电影院| 一区二区在线观看日本视频| 免费人成视频x8x8入口| 中文毛片无遮挡高潮|