版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 班級(jí):</b></p><p><b> 姓名:</b></p><p><b> 學(xué)號(hào):</b></p><p><b> 設(shè)計(jì)時(shí)間:</b></p><p> 一、應(yīng)用程序的名稱:鏈表</p><
2、;p> 二、應(yīng)用程序的主題與設(shè)計(jì)目的:實(shí)現(xiàn)一個(gè)鏈表的建立、輸出,并且完成節(jié)點(diǎn)的插入、刪除操作。</p><p><b> 三、應(yīng)用程序簡(jiǎn)介:</b></p><p><b> 1、基本結(jié)構(gòu) </b></p><p><b> A、功能模塊圖</b></p><p&g
3、t;<b> B、各模塊流程圖</b></p><p> ?。?) 鏈表的建立:</p><p> 開(kāi)辟一個(gè)新節(jié)點(diǎn),使p1、P2指向它</p><p> 讀入一個(gè)學(xué)生數(shù)據(jù)給p1所指的結(jié)點(diǎn)</p><p><b> Y</b></p><p><b> N&
4、lt;/b></p><p> 輸出p指向的節(jié)點(diǎn)并且p</p><p><b> 指向下一個(gè)節(jié)點(diǎn)</b></p><p> ?。?) 鏈表結(jié)點(diǎn)的刪除</p><p><b> Y</b></p><p><b> N</b></p&g
5、t;<p><b> P2后移一個(gè)位置</b></p><p><b> P1后移一個(gè)位置</b></p><p><b> N</b></p><p><b> Y</b></p><p> Np1是要?jiǎng)h除的結(jié)點(diǎn)</p&g
6、t;<p><b> Y</b></p><p> (4) 鏈表節(jié)點(diǎn)的插入</p><p><b> YN</b></p><p><b> N</b></p><p><b> Y</b></p><p>
7、; 2、基本內(nèi)容:(源代碼及注釋)</p><p> #include<stdio.h></p><p> #include<malloc.h></p><p> #define LEN sizeof(struct student)</p><p><b> int n;</b><
8、/p><p> struct student</p><p><b> {int num;</b></p><p> int score;</p><p> struct student *next;};</p><p> struct student *creat(void) /*
9、定義函數(shù),此函數(shù)帶回一個(gè)指向鏈表頭的指針*/</p><p> {struct student *head;</p><p> struct student *p1,*p2;</p><p><b> n=0;</b></p><p> p1=p2=(struct student *)malloc(LEN);
10、 /*開(kāi)辟一個(gè)新單元*/</p><p> scanf("%d,%d",&p1->num,&p1->score);</p><p> head=NULL;</p><p> while(p1->num!=0)</p><p><b> { n=n+1;</b&g
11、t;</p><p> if(n==1)head=p1;</p><p> else p2->next=p1; /*把p1所指的結(jié)點(diǎn)連接在p2所指的結(jié)點(diǎn)后面*/</p><p><b> p2=p1;</b></p><p> p1=(struct student*)malloc(LEN);<
12、;/p><p> scanf("%d,%d",&p1->num,&p1->score);}</p><p> p2->next=NULL;</p><p> return(head); /*函數(shù)返回head的值,即鏈表中第一個(gè)節(jié)點(diǎn)的起始地址*/</p><p><b>
13、 }</b></p><p> void print(struct student*head)</p><p> {struct student*p;</p><p> printf("\nNow,these %d records are:\n",n);</p><p><b> p=hea
14、d;</b></p><p> if(head!=NULL)</p><p><b> do</b></p><p> { printf("%d %d\n",p->num,p->score);</p><p> p=p->next;</p><
15、p> }while(p!=NULL);</p><p><b> }</b></p><p> struct student*del(struct student*head,int num)</p><p> {struct student*p1,*p2;</p><p> if(head==NULL)&
16、lt;/p><p> {printf("\nlist null! \n");</p><p> return head;</p><p><b> }</b></p><p><b> p1=head;</b></p><p> while(num!
17、=p1->num && p1->next!=NULL) /*p1指向的不是所要找的節(jié)點(diǎn),且后有節(jié)點(diǎn)*/</p><p><b> { p2=p1;</b></p><p> p1=p1->next;</p><p> } /*p1后移一個(gè)節(jié)點(diǎn)*/</p><p>
18、 if(num==p1->num) /*找到了*/</p><p> { if(p1==head)head=p1->next; /*若p1指向的首節(jié)點(diǎn),把第二個(gè)節(jié)點(diǎn)地址賦予head*/</p><p> else p2->next=p1->next; /*否則將下一個(gè)節(jié)點(diǎn)地址賦給前一節(jié)點(diǎn)地址*/</p><p> p
19、rintf("delete:%d\n",num);</p><p><b> n=n-1;</b></p><p><b> }</b></p><p> else printf("%d not beed found!\n",num); /*找不到該節(jié)點(diǎn)*/</p
20、><p> return(head);</p><p><b> }</b></p><p> struct student*insert(struct student*head,struct student*stud)</p><p> {struct student*p0,*p1,*p2;</p>
21、<p> p1=head; /*使p1指向第一個(gè)節(jié)點(diǎn)*/</p><p> p0=stud; /*p0指向要插入的節(jié)點(diǎn)*/</p><p> if(head==NULL) /*原來(lái)的鏈表是空表*/</p><p><b> {head=p0;</b></p><p> p0-
22、>next=NULL;</p><p> } /*使p0指向的節(jié)點(diǎn)作為頭結(jié)點(diǎn)*/</p><p><b> else</b></p><p> {while((p0->num>p1->num) && (p1->next!=NULL))</p><p>
23、; { p2=p1; /*使p2指向剛才p1指向的節(jié)點(diǎn)*/</p><p> p1=p1->next; /*p1后移一個(gè)節(jié)點(diǎn)*/</p><p><b> }</b></p><p> if(p0->num<=p1->num)</p><p> {if(head=
24、=p1)</p><p> head=p0; /*插到原來(lái)第一個(gè)節(jié)點(diǎn)之前*/</p><p> else p2->next=p0; /*插到p2指向的節(jié)點(diǎn)之后*/</p><p> p0->next=p1;</p><p><b> }</b></p><p&g
25、t;<b> else</b></p><p> { p1->next=p0;</p><p> p0->next=NULL;</p><p> } /*插到最后的節(jié)點(diǎn)之后*/</p><p><b> }</b></p><p> n=n+
26、1; /*節(jié)點(diǎn)數(shù)加1*/</p><p> return(head);</p><p><b> }</b></p><p> void main() /*作主調(diào)函數(shù)*/</p><p> { struct student *head,stu;</p><p> lon
27、g del_num;</p><p> printf("input records:\n"); </p><p> head=creat(); /*建立鏈表,返回頭指針*/</p><p> print(head); /*輸出全部節(jié)點(diǎn)*/</p><p> printf("\nin
28、put the deleted number:");</p><p> scanf("%1d",&del_num); /*輸入要?jiǎng)h除的學(xué)號(hào)*/</p><p> head=del(head,del_num); /*刪除后鏈表的頭地址*/</p><p> print(head); /*輸出全部節(jié)點(diǎn)
29、*/</p><p> printf("\ninput thr inserted record:"); /*輸入要插入的節(jié)點(diǎn)*/</p><p> scanf("%d,%d",&stu.num,&stu.score);</p><p> head=insert(head,&stu);
30、 /*插入一個(gè)節(jié)點(diǎn),返回頭結(jié)點(diǎn)地址*/</p><p> print(head); /*輸出全部節(jié)點(diǎn)*/</p><p><b> }</b></p><p> 四、主要運(yùn)行界面的介紹:(在vc環(huán)境下)</p><p> 1、連接運(yùn)行后,輸入數(shù)據(jù)(以兩組為例),組之間以逗號(hào)間隔,最后以數(shù)字0結(jié)束。
31、如圖所示,輸入后可顯示數(shù)據(jù)。</p><p> 2、選擇輸入要?jiǎng)h除的數(shù)據(jù),即第幾組;然后就可顯示刪除后的記錄。</p><p> 3、輸入要添加的信息,將新數(shù)據(jù)列入數(shù)據(jù)列全部輸出,并且新數(shù)據(jù)將取代之前被刪除的數(shù)據(jù)的位置。</p><p> 五、課程設(shè)計(jì)中的得意之處:</p><p> 首先能夠如所要求的那樣完成鏈表的建立與輸出以及鏈表
32、中結(jié)點(diǎn)的刪除與插入,再次,在此程序中,在接連著完成刪除與插入后,實(shí)際的效果還相當(dāng)于兩數(shù)據(jù)間的替代。</p><p> 六、目前存在的問(wèn)題:</p><p> 不能隨意選擇——只進(jìn)行刪除或者是只進(jìn)行插入,另外每次只能刪除或者插入一個(gè)數(shù)據(jù),而不能完成多個(gè)數(shù)據(jù)同時(shí)進(jìn)行的操作。</p><p> 七、課程設(shè)計(jì)存在的目的:</p><p> 開(kāi)
33、展課程設(shè)計(jì),有利于同學(xué)們對(duì)基礎(chǔ)知識(shí)的理解,從實(shí)踐中真實(shí)地體驗(yàn)程序設(shè)計(jì)的“神奇之處”,更好地鞏固所學(xué)的知識(shí)。課程設(shè)計(jì)還有利于邏輯思維的鍛煉,從任務(wù)分析、確定算法、界面布局、編寫代碼到調(diào)試運(yùn)行,整個(gè)過(guò)程都需要有條理地去構(gòu)思。</p><p><b> 八、自我感受:</b></p><p> 短短的一周時(shí)間,要完成課程設(shè)計(jì)的確不容易,畢竟是第一次做的。在編程的整個(gè)過(guò)程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---鏈表操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---鏈表操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---雙向鏈表
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-鏈表操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---鏈表操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-- 循環(huán)單鏈表
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-雙鏈表創(chuàng)建與演示設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--雙向循環(huán)鏈表的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---城市鏈表的設(shè)計(jì)與實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---鏈表的創(chuàng)建、插入、刪除、修改
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---鏈表的維護(hù)與文件形式的保存
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-----鏈表的維護(hù)與文件形式的保存
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論