數(shù)據(jù)結(jié)構(gòu)城市鏈表(共10頁)_第1頁
數(shù)據(jù)結(jié)構(gòu)城市鏈表(共10頁)_第2頁
數(shù)據(jù)結(jié)構(gòu)城市鏈表(共10頁)_第3頁
數(shù)據(jù)結(jié)構(gòu)城市鏈表(共10頁)_第4頁
數(shù)據(jù)結(jié)構(gòu)城市鏈表(共10頁)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上數(shù)據(jù)結(jié)構(gòu)實驗報告_09_級 _x_班 _xxxxx_年_xx_月_xx_日姓名_xxxxx_ 學(xué)號 _xxxxxxx_ 得分_1實驗題目將若干城市的信息,存入一個帶頭結(jié)點的單鏈表。結(jié)點中的城市信息包括:城市名,城市的位置坐標(biāo)。要求能夠利用城市名和位置坐標(biāo)進行有關(guān)查找、插入、刪除、更新等操作。2需求分析本演示程序用VC編寫,完成城市鏈表的生成,插入、刪除,更新等操作。 輸入的形式和輸入值的范圍:先創(chuàng)建一個城市鏈表需要輸入五個城市的名稱及城市的位置坐標(biāo);再輸入你需要對鏈表的操作功能號1輸出城市鏈表信息、2查找、3插入、4刪除、5修改、6輸出與坐標(biāo)P距離小于D的城市、0退出

2、程序.查找城市時輸入城市的名稱;插入城市信息時輸入城西的名稱及它的位置坐標(biāo);刪除鏈表中的城市需輸入城市的名稱;修改城市鏈表是需輸入舊的城市名和新的城市名及新的位置坐標(biāo);操作6應(yīng)輸入中心城市的坐標(biāo)及一個距離范圍。在所有輸入中,操作功能號是整數(shù),城市名是單個的字母,位置坐標(biāo)及距離是浮點型的數(shù)字。 輸出的形式:黑框界面出現(xiàn)時就提示出入5個城市的數(shù)據(jù)域,之后每次操作都會輸出包含各個操作的功能表以供選擇,輸出城市鏈表是會輸出城市名及位置坐標(biāo),其它的操作每一步都會輸出相應(yīng)的提示信息。 程序所能達到的功能:完成城市鏈表的生成、插入、刪除、查找及更新操作 測試數(shù)據(jù):A 創(chuàng)建城市鏈表操作中依次輸入e 1.0 2

3、.0d 2.0 2.5c 4.5 3.2b 5.4 2.6a 7.4 5.2生成一個城市鏈表B 查找操作中輸入城市名 c 返回這個城市的位置坐標(biāo)4.5 3.2 C 插入操作中依次輸入新的城市名及位置坐標(biāo)f,7.4,3.5,返回插入成功提示 D 刪除操作中輸入需刪除的城市名 f ,返回刪除成功提示 E 更新操作依次輸入e,g,2.8,5.7 返回更新成功提示 F 查找距離操作中依次輸入中心坐標(biāo)及距離3.8,6.4,2.66 返回鏈表中符合要求的城市信息g,2.8,5.73概要設(shè)計1)為了實現(xiàn)上述程序功能,需要定義單鏈表的抽象數(shù)據(jù)類型:ADT LinkList 數(shù)據(jù)對象:D=ai|aiIntege

4、rSet,i=0,1,2,n,n0 數(shù)據(jù)關(guān)系:R=<ai,ai+1>|ai,ai+1 D基本操作:City CreateList()操作結(jié)果:構(gòu)造一個城市鏈表L,錄入五個城市信息.search()初始條件:城市鏈表已存在操作結(jié)果:查找是否有與輸入值一致的城市名,若存在,返回城市的位置坐標(biāo);Insert()初始條件:城市鏈表已存在操作結(jié)果:將新的城市信息插入到鏈表中 Delete()初始條件:城市鏈表已存在操作結(jié)果:刪除鏈表需要刪除的城市信息distance()初始條件:城市鏈表已存在操作結(jié)果:輸出給定的一個距離范圍內(nèi)的所有城市信息alter()初始條件:城市鏈表已存在操作結(jié)果:修改

5、鏈表中的城市信息print()初始條件:城市鏈表已存在操作結(jié)果:打印出城市鏈表中的所有城市信息begin()操作結(jié)果:在屏幕上顯示操作功能號2)本程序包含8個函數(shù): 主函數(shù)main() 創(chuàng)建城市鏈表函數(shù)City CreateList() 顯示操作功能函數(shù)void begin() 顯示單鏈表城市信息函數(shù)void print() 插入一個城市函數(shù)void Insert() 刪除一個城市信息函數(shù)void Delete() 查找城市坐標(biāo)函數(shù)void search() 修改城市鏈表函數(shù)void alter() 查找一個固定距離范圍內(nèi)的城市void distance()各函數(shù)間關(guān)系如下: 4詳細設(shè)計#in

6、clude<stdio.h>#include<malloc.h>#include<math.h>#include <stdlib.h>#include <string.h>typedef int status;typedef struct datachar Cname;float x;float y;data;typedef struct CityNodedata data;struct CityNode *next;CityNode,*City; City L; City CreateList()/創(chuàng)建城市鏈表int i;City

7、p;L=(City )malloc(sizeof(CityNode);L->next=NULL;printf("請輸入5個城市的數(shù)據(jù)域:n");for(i=0;i<5;i+)p=(City)malloc(sizeof(CityNode);scanf("%c %f %f",&p->data.Cname,&p->data.x,&p->data.y); getchar();p->next=L->next;L->next=p;return L;void search()/查找城市坐標(biāo) cha

8、r name;City p;p=L;printf("請輸入需要查找的城市名:n");scanf("%c",&name);printf("該城市的坐標(biāo)為:n");while(p) if(p->data.Cname=name)printf("%f,%f",p->data.x,p->data.y);p=p->next;void Insert()/插入新的城市 City p=L->next; City s=(City)malloc(sizeof(CityNode); printf(&q

9、uot;請輸入要插入的城市名及它的坐標(biāo)"); scanf("%c,%f,%f",&s->data.Cname,&s->data.x,&s->data.y); s->next=p->next; p->next=s; printf("新城市%c插入成功n",s->data.Cname);void Delete()/刪除城市City q,p=L->next;int j=0;char z;printf("請輸入要刪除的城市名:n");scanf("%c

10、",&z);while(p->data.Cname!=z)q=p;p=p->next;q->next=p->next;free(p);printf("刪除成功!n");void distance()/距離范圍內(nèi)的城市float s,d;float x1,y1,x2,y2;City p;p=L->next;printf("請輸入中心坐標(biāo)x1,y1:n");scanf("%f,%f",&x1,&y1);printf("請輸入與中心城市的距離范圍d:n");

11、scanf("%f",&d);while(p)x2=p->data.x; y2=p->data.y; s=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); if(s<=d) printf("與(%f,%f)的中心城市的距離小于等于%f的城市有:n",x1,y1,d); printf("%c,%f,%f",p->data.Cname,x2,y2);p=p->next;void alter()/修改城市節(jié)點char a,b;float m,n;int k=0;City p=L;

12、printf("請輸入舊的城市名:");scanf("%c",&a);while(p->data.Cname!=a) p=p->next; printf("請輸入新的城市名:n");scanf(" %c",&b);printf("請輸入新的城市坐標(biāo):n"); scanf("%f,%f",&m,&n);p->data.Cname=b;p->data.x=m;p->data.y=n;void print()/輸出城市鏈

13、表 int i; City a; char name10;float x10;float y10;a=L->next;i=0;while(a)namei=a->data.Cname;xi=a->data.x;yi=a->data.y;a=a->next;printf("%c (%f,%f)n",namei,xi,yi);i+; void begin() int i;doprintf("n");printf("-n");printf(" 請選擇需要操作的功能: n");printf(&q

14、uot; 1->輸出城市鏈表信息n");printf(" 2->查找n");printf(" 3->插入n");printf(" 4->刪除n");printf(" 5->修改n");printf(" 6->與坐標(biāo)P距離小于D的城市n");printf(" 0->退出程序n");printf("-n");printf("n");printf("請輸入您選擇的功能號:"

15、;);scanf("%d",&i);getchar();if(i>0)switch(i)case 1:print();break;case 2:search();break;case 3:Insert();break;case 4:Delete();break;case 5:alter();break;case 6:distance();break;case 0:break;printf("n");if(i<0)printf("您輸入的數(shù)值不正確,請重新輸入!n");while(i!=0);void main() CreateList(); begin();5調(diào)試分析 a是如何解決的以及對設(shè)計與實現(xiàn)的回顧討論和分析;調(diào)試過程中遇到的問題有在寫調(diào)用函數(shù)是函數(shù)的形參的類型與實參的類型不一致我經(jīng)常在很多地方符號丟失 改進設(shè)想;直接將數(shù)值在調(diào)用的函數(shù)里定義、輸入及輸出避免在主函數(shù)里傳實參值,這樣就不易出錯。 b經(jīng)驗和體會 寫函數(shù)時對指針的應(yīng)用有些混亂 總的來說還是對以前的C

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論