數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、摘 要1關(guān)鍵詞:隊(duì)列,二進(jìn)制,十進(jìn)制,轉(zhuǎn)換,通訊錄,增加,刪除,修改,查詢1一、鏈隊(duì)之二十進(jìn)制轉(zhuǎn)換21.1、程序設(shè)計(jì)要求21.2、流程圖31.3、鏈表的儲存結(jié)構(gòu)41.4、源代碼41.5、運(yùn)行結(jié)果圖:9二、通訊錄系統(tǒng)112.1、主程序的流程:112.2、鏈表的儲存結(jié)構(gòu)112.3、程序設(shè)計(jì)要求112.4、源代碼:122.5、程序結(jié)果圖:22心得體會24參考文獻(xiàn)24摘 要 數(shù)據(jù)結(jié)構(gòu)主要介紹一些最常用的數(shù)據(jù)結(jié)構(gòu),闡明各種數(shù)據(jù)結(jié)構(gòu)內(nèi)在的邏輯關(guān)系,討論其在計(jì)算機(jī)中的存儲表示,以及在其上進(jìn)行各種運(yùn)算時的實(shí)現(xiàn)算法,并對算法的效率進(jìn)行簡單的分析和討論。數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計(jì)算機(jī)軟件和計(jì)算機(jī)硬件之間的一門計(jì)算機(jī)專

2、業(yè)的核心課程,它是計(jì)算機(jī)程序設(shè)計(jì)、數(shù)據(jù)庫、操作系統(tǒng)、編譯原理及人工只能等的重要基礎(chǔ),廣泛應(yīng)用于信息學(xué)、系統(tǒng)工程等各種領(lǐng)域。算法與數(shù)據(jù)結(jié)構(gòu)旨在分析研究計(jì)算機(jī)加工的數(shù)據(jù)對象的特性,以便選擇適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)和存儲結(jié)構(gòu),從而使建立在其上的解決問題的算法達(dá)到最優(yōu)。本次課程設(shè)計(jì)主要應(yīng)用幾本的數(shù)據(jù)結(jié)構(gòu)只是,編程實(shí)現(xiàn)1.二進(jìn)制十進(jìn)制數(shù)的轉(zhuǎn)換 2.通訊錄的增加、刪除、修改和查詢功能。并通過此次課程設(shè)計(jì)更深刻的聊天級數(shù)據(jù)結(jié)構(gòu)的實(shí)際意義,實(shí)現(xiàn)課本算法 關(guān)鍵詞:隊(duì)列,二進(jìn)制,十進(jìn)制,轉(zhuǎn)換,通訊錄,增加,刪除,修改,查詢一、鏈隊(duì)之二十進(jìn)制轉(zhuǎn)換1.1、程序設(shè)計(jì)要求運(yùn)用數(shù)據(jù)結(jié)構(gòu)中的算法思想作數(shù)據(jù)結(jié)構(gòu),結(jié)合c語言基本知識,編寫

3、一個通訊錄管理系統(tǒng)。通過完成本課題,進(jìn)一步熟悉c語言的基本知識,并掌握數(shù)據(jù)結(jié)構(gòu)的一些基本算法思想,掌握c語言的文件操作(包括從磁盤讀入和向磁盤寫入內(nèi)容),進(jìn)一步熟悉指針的用法,數(shù)組的建立運(yùn)用和函數(shù)的調(diào)用等。實(shí)現(xiàn)以下幾方面的功能:為了方便從事計(jì)算機(jī)方面工作的人群及廣大計(jì)算機(jī)系大學(xué)生,編寫出一個能將二進(jìn)制數(shù)和十進(jìn)制書相互轉(zhuǎn)化程序。使得在轉(zhuǎn)換過程中節(jié)省運(yùn)算時間,節(jié)省不必要的精力花費(fèi)。在程序中能通過輸入特定字符實(shí)現(xiàn)二進(jìn)制轉(zhuǎn)換為十進(jìn)制和十進(jìn)制轉(zhuǎn)換為二進(jìn)制的選擇,并且在轉(zhuǎn)換結(jié)束后將轉(zhuǎn)換結(jié)果予以返回。在程序使用結(jié)束后,實(shí)現(xiàn)通過輸入特定字符結(jié)束本程序。1.2、流程圖用戶選擇轉(zhuǎn)換類型二換十運(yùn)算十換二運(yùn)算顯示結(jié)果

4、等待用戶輸入選擇yn繼續(xù)轉(zhuǎn)換開始結(jié)束主程序流程圖1.3、鏈表的儲存結(jié)構(gòu)datanextn數(shù)據(jù)域指針域數(shù)據(jù)域1.4、源代碼#include#include#include#include#includetypedef struct changeint data;struct change *next;n;typedef structn *head;int n;es;void es()n *front,*rear,*head;es p;int count,sum=0;int i;p.n=0;printf(nnnnnnntttt歡迎使用二十進(jìn)制轉(zhuǎn)換功能!);sleep(1000);system(cl

5、s);printf(nnnnnnnttt請輸入要轉(zhuǎn)換的二進(jìn)制數(shù)據(jù):nn);head=front=rear=(n *)malloc(sizeof(n);scanf(%d,&rear-data);for(;rear-datadata-1;)p.n=p.n+1;rear=(n *)malloc(sizeof(n);scanf(%d,&rear-data);if(rear-datadata-1)front-next=rear;front=rear;elsefront-next=null;front=head;docount=1;if(front-data=1)for(i=1;idata*2;elsec

6、ount=0;sum=sum+count;p.n=p.n-1;front=front-next;while(front!=null);printf(%dn,sum);void se()int data;int i,j;n *top,*bottom,*head;es p;printf(nnnnnnntttt歡迎使用十二進(jìn)制轉(zhuǎn)換功能!);sleep(1000);system(cls);printf(nnnnnnnttt請輸入要轉(zhuǎn)換的十進(jìn)制數(shù)據(jù):nn);scanf(%d,&data);i=data%2;j=data/2;if(i!=data)head=top=bottom=(n *)malloc(s

7、izeof(n);top-data=i;top-next=null;p.n=p.n+1;dodata=j;i=data%2;j=data/2;top=(n *)malloc(sizeof(n);top-data=i;p.n=p.n+1;top-next=bottom;bottom=top;while(j!=0);head=top;printf(轉(zhuǎn)換成的二進(jìn)制數(shù)據(jù)為:);for(;top!=null;)printf(%d,top-data);top=top-next;elseprintf(轉(zhuǎn)換成的二進(jìn)制數(shù)據(jù)為:);printf(%dn,data);void menu()char choice;i

8、nt d;dod=0;printf(n);printf(t3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 請選擇功能: 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n); printf(t3 3n); printf(t3 a. 二進(jìn)制轉(zhuǎn)換十進(jìn)制功能 3n); printf(t3 3n); printf(t3 b. 十進(jìn)制轉(zhuǎn)換二進(jìn)制功能 3n); printf(t3 3

9、n); printf(t3 3n); printf(t3 3n); printf(t3 3n); printf(t3 3n); printf(t3 3n); printf(t3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3n); scanf(%c,&choice);system(cls); switch(choice)casea:es();break;caseb:se();break;casea:es();break;caseb:se();break;default:d=1;printf(nnnnnnntttt選擇有

10、誤!請重新輸入!nnn);sleep(1000);getchar();system(cls);while(d);void main()printf(n);system(color 4f);printf(t3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 歡迎使用二-十進(jìn)制轉(zhuǎn)換系統(tǒng) 3n);printf(t

11、3 3n);printf(t3 謝謝! 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3n);printf(按任意鍵繼續(xù):);getch();system(cls);menu();1.5、運(yùn)行結(jié)果圖:二、通訊錄系統(tǒng)2.1、主程序的流程: 主函數(shù)刪除新增修改查詢顯示相應(yīng)信息退出系統(tǒng)2.2、鏈表的儲存結(jié)構(gòu)na

12、metelnemailnext指針域數(shù)據(jù)域2.3、程序設(shè)計(jì)要求運(yùn)用數(shù)據(jù)結(jié)構(gòu)中的算法思想作數(shù)據(jù)結(jié)構(gòu),結(jié)合c語言基本知識,編寫一個通訊錄管理系統(tǒng)。通過完成本課題,進(jìn)一步熟悉c語言的基本知識,并掌握數(shù)據(jù)結(jié)構(gòu)的一些基本算法思想,掌握c語言的文件操作(包括從磁盤讀入和向磁盤寫入內(nèi)容),進(jìn)一步熟悉指針的用法,數(shù)組的建立運(yùn)用和函數(shù)的調(diào)用等。實(shí)現(xiàn)以下幾方面的功能:1.增加新記錄;2.刪除記錄;3.修改信息;4.查詢信息;5.退出通訊錄管理系統(tǒng)。簡介:本程序是通過鏈表實(shí)現(xiàn)的簡單通訊錄,所實(shí)現(xiàn)的此通訊錄包含著三個信息,即通訊者的姓名、電話號碼和住址。該程序能夠幫助使用者完成一些常用的通訊記錄,操作界面簡單易懂,使

13、用方便。如果使用者還需要其他功能只要進(jìn)行簡單的修改就可以實(shí)現(xiàn)添加。因?yàn)楸救怂接邢?,該程序在算法的選擇方面還不夠好,有待于進(jìn)一步完善。2.4、源代碼:#include#include#include#include#include#define len sizeof(struct telbook)/宏定義#define en sizeof(struct tel)typedef struct telchar name9;char tel16;char n;char email20;td;typedef struct telbook td stu; struct telbook *next;tb;

14、tb *head;void menu ();void save();int modify(int *m);int del(int *m);void find(int *n);int input(int *n);void list(char f,int *n);void bye ();tb *read(int *n);void main()printf(nnn);printf(t3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3n);printf(t3 3n);printf(t3 3n);printf(t3 歡迎使用

15、 3n);printf(t3 3n);printf(t3 3n);printf(t3 通訊錄管理系統(tǒng) 3n);printf(t3 按任意鍵繼續(xù) 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3n);printf(t3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3);getch();system(cls);menu();void menu ()int n,x=0,m;doprintf(n【通訊錄

16、管理系統(tǒng)】n);printf(-系統(tǒng)菜單顯示如下-);printf(nnn);printf(t3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3n);printf(t3 3n);printf(t3 - 輸入 3n);printf(t3 3n);printf(t3 - 查詢 3n);printf(t3 3n);printf(t3 - 修改 3n);printf(t3 3n);printf(t3 - 刪除 3n);printf(t3 3n);printf(t3 - 退出 3n);printf(t3 3n);printf

17、(t3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3n);printf(請輸入您要選擇的菜單:);scanf(%d,&n);system(cls);m=0;head=read(&m);switch(n)case 1:input(&m);break;case 2:find(&m);break;case 3:modify(&m);break;case 4:del(&m);break;case 5:bye();break; default:printf(nnnnnnnnntttt輸入錯誤,請重新輸入:);getchar

18、();getch();system(cls);while(x=0);void bye()tb *top;while(head!=null)top=head-next;free(void *)head) ;head=top;printf(nnnnnnnnn);printf(tttt謝 謝 使 用!n);exit(0);int input(int *n)file *fp;/添加讀文件函數(shù)tb *b;int i,j;struct telbook *p,*q,*m,*v;/定義指針變量p=(struct telbook *)malloc(len);/開辟新單元printf(請輸入聯(lián)系人名字:);sca

19、nf(%s,);q=head;for(i=1;,)=0)/比較字符串printf(聯(lián)系人姓名重復(fù)! 三秒鐘后返回主菜單!);return 0;q=q-next;printf(請輸入聯(lián)系人號碼:);scanf(%s,p-stu.tel);q=head;for(i=1;istu.tel,q-stu.tel)=0)printf(聯(lián)系人號碼重復(fù)! 三秒鐘后返回主菜單!);return 0;q=q-next;if(*nstu.n);getchar();printf(請輸入聯(lián)系人電子郵件:);scanf(%s,p-stu.email);p-next

20、=null;if(head=null)head=p;elsem=head;for(i=1;inext;m-next=p;*n=*n+1;b=(struct telbook *)malloc(len);for(j=0;j*n-1;j+)for(i=0;inext;/top下一個結(jié)點(diǎn)賦給vif(strcmp(,)0)/比較兩相鄰地址中姓名音序字符串大小strcpy(,);/交換信息strcpy(b-stu.tel,m-stu.tel);b-stu.n=m-stu.n;strcpy(b-stu.email,m-stu.e

21、mail);strcpy(,);strcpy(m-stu.tel,v-stu.tel);m-stu.n=v-stu.n;strcpy(m-stu.email,v-stu.email);strcpy(,);strcpy(v-stu.tel,b-stu.tel);v-stu.n=b-stu.n;strcpy(v-stu.email,b-stu.email);m=m-next;/比較下一結(jié)點(diǎn)字符串v=v-next;if(fp=fopen(record.txt,w)=null)printf(文件打開失敗!保存失??! 三秒鐘

22、后返回主菜單!n);return 0;elseb=head;for(i=1;inext;fclose(fp);printf(保存成功!n);return 1;elseprintf(存儲已滿! 三秒后返回主菜單!n);return 0;void save(tb *head)tb *tp;tp=head; file *fp; /*指向文件的指針*/if(fp=fopen(record.txt,w)=null)/*打開文件,并判斷打開是否正常*/ printf(無法打開文件! 三秒鐘后返回主菜單!n);/*沒打開*/ elseprintf(nsaving filen);/*輸出提示信息*/if(tp

23、!=null)dofwrite(tp,en,1,fp);tp=tp-next;while(tp!=null);fclose(fp);/*關(guān)閉文件*/printf(*save success*n); /*顯示保存成功*/*讀入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組*/int modify(int *m)int n;tb *tp,*head;char name9;char d;head=tp=read(m);printf(請輸入聯(lián)系人姓名:);scanf(%s,name);if(tp=null)printf(通訊錄為空! 三秒鐘后返回主菜單!n);return 0;if(tp!=null)don=strcmp(n

24、ame,);if(n=0)printf(聯(lián)系人已找到,請修改!n);printf(名字:);scanf(%s,);printf(電話:);scanf(%s,tp-stu.tel);printf(分類:);getchar();scanf(%c,&tp-stu.n);printf(電子郵件:);scanf(%s,tp-stu.email);printf(是否保存?);getchar();scanf(%c,&d);if(d=y|d=y)save(head);return 1;elsereturn 0;tp=tp-next;while(tp!=null);i

25、f(tp=null)printf(未找到此聯(lián)系人!n);return 0;return 0;void list(char f,int *n) int i=0,j; tb *p;/定義指針變量 p=head; printf(nnn*信息*n);/輸出相關(guān)信息 printf( 姓名 電話 電子郵件 n); printf(-n); for(j=1;jstu.n)=f) i+; printf(%d %s %s %sn, i, ,p-stu.tel,p-stu.email); p=p-next; printf(*end*n);int del(int *m)int n,h,i;tb *p;tb *q;char name9;char x;file *fp;if(*m=0)printf(通訊錄為空!n);return 0;doh=0;p=head;printf(請輸入聯(lián)系人姓名:n);scanf(%s,name);if(p=null)prin

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論