欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

鏈表的動態(tài)建立,插入、刪除節(jié)點學(xué)習記錄

成都創(chuàng)新互聯(lián)長期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為海湖新企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),海湖新網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

(一)單向鏈表的動態(tài)建立

假設(shè)有如下情景:用一個函數(shù)實現(xiàn)創(chuàng)建3個學(xué)生的數(shù)據(jù)的動態(tài)鏈表,包含學(xué)生的學(xué)號num、成績score;

思路

(1)先定義3個變量,head,p1,p2;然后用malloc函數(shù)開辟一個節(jié)點,讓p1、p2兩個指針指向這個節(jié)點。

(2)從鍵盤上讀取一個學(xué)生的數(shù)據(jù)賦值給這個節(jié)點。在此約定學(xué)號不能為0,當輸入學(xué)號為0時候,則代表建立鏈表結(jié)束。

(3)如果這個輸入的p1->num!=0,則代表輸入的是第一個節(jié)點,把這個節(jié)點給頭指針。即head=p1; 如上圖所示

(4)然后再開辟另一個節(jié)點,并使得p1指向它,接著從鍵盤輸入數(shù)據(jù),如果從鍵盤的讀取到數(shù)還是不為0,那么該節(jié)點有效。如上圖所示

(5)把p1的值賦值給p2->next, 即p2->next=p1; 那么現(xiàn)在兩個節(jié)點就連到一起了。如上圖所示

(6)接著把p2=p1,這樣p2就跟上了p1的步伐了,可以開始下一次同樣的操作;如上圖所示如上圖所示

(7)再開辟一個新節(jié)點,并使得p1指向它,如果num不為0,那么就吧p1賦值給p2->next,這樣3個節(jié)點就連接到一起了。如上圖所示

(8)以此類推,知道最后輸入的num 為0 ,建立結(jié)束。如上圖所示

更為具體代碼如下:

//動態(tài)鏈表的創(chuàng)建;
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student)
struct Student   //結(jié)構(gòu)體聲明
{
int num;
float score;
struct Student* next;
};
int n;
struct Student   *creat(void)
{
struct Student* head,*p1,*p2;                                    //定義三個指針;
    n = 0; head = NULL;                                             //頭指針初始化為NULL;
    p1 = p2 = (struct Student*)malloc(LEN); //開辟一個節(jié)點,讓p1 p2都指向它;
    scanf_s("%ld,%f", &p1->num, &p1->score); //給這個節(jié)點賦值;
    
    while (p1->num != 0)                 //當這個節(jié)點的num不為0的時候,說明此節(jié)點有效
    {
        n= n + 1;                       //節(jié)點數(shù)加1;
        if (n == 1) head = p1;           //如果這是第一個節(jié)點,那么就讓頭指針指向它;
        else p2->next = p1;              //如果不是第一個節(jié)點,就讓p2指向它,此時的p2是上一個節(jié)點的指針;
        p2 = p1;                         //之后,讓P2跟上P1的步伐,現(xiàn)在p1和p2都指向新的節(jié)點了;
        p1= (struct Student*)malloc(LEN);//開辟一個 新新的節(jié)點,讓p1指向它,重復(fù)之前的步驟
        scanf_s("%ld,%f", &p1->num, &p1->score);//輸入給新新節(jié)點的數(shù)據(jù);
    }
    p2->next = NULL;                //退出while循環(huán)的條件是p1->num=0;說明鏈表建立結(jié)束了,之后把p2的后驅(qū)指為null即可;

    return head;     //返回頭指針;
}
int main()
{
struct Student* pt;
    pt= creat();
    printf("\nnum:%ld\nscore:%5.1f\n", pt->num, pt->score);
return 0;
}

網(wǎng)站標題:鏈表的動態(tài)建立,插入、刪除節(jié)點學(xué)習記錄
分享網(wǎng)址:http://chinadenli.net/article38/dsoijpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站策劃網(wǎng)站設(shè)計公司、企業(yè)網(wǎng)站制作手機網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名