成都創(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)