




已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
長治學(xué)院長治學(xué)院課程設(shè)計(jì)任務(wù)書課程名稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 設(shè)計(jì)題目:帶頭結(jié)點(diǎn)的并具有頭尾指針的單循環(huán)鏈表 系 別: 計(jì)算機(jī)系 專 業(yè): 網(wǎng)絡(luò)工程 學(xué)生姓名: 王魯俊 學(xué) 號: 07407320 起止日期: 2008年 11月08 日 2008年12月18 日 指導(dǎo)教師: 孫俊杰 課程設(shè)計(jì)題目帶頭結(jié)點(diǎn)并具有頭尾指針的單鏈表的各種操作姓名王魯俊學(xué)號07407320班級07級計(jì)3班系別計(jì)算機(jī)系專業(yè)網(wǎng)絡(luò)工程組員 王魯俊 李顯指導(dǎo)教師孫俊杰課程設(shè)計(jì)目的1、 為了熟練地掌握帶頭節(jié)點(diǎn)和頭尾指針單循環(huán)鏈表的各種操作;2、 為了以后使用帶頭節(jié)點(diǎn)頭尾指針單循環(huán)鏈表時(shí)更加地方便。課程設(shè)計(jì)環(huán)境Turboc2、windows XP課程設(shè)計(jì)任務(wù)和要求1 編寫帶頭結(jié)點(diǎn)并具有頭尾指針的單循環(huán)鏈表。2 密碼和存盤程序的編寫。3 編寫各種操作算法。4 上機(jī)調(diào)試程序。課程設(shè)計(jì)工作進(jìn)度計(jì)劃序號起止日期工 作 內(nèi) 容12008110611.15需求分析22008111811.23查閱相關(guān)資料320081128123密碼和存盤的編寫4200812 1412.15操作算法編寫520081218上機(jī)調(diào)試并完成課程設(shè)計(jì)教研室審核意見:教研室主任簽字: 年 月 日教學(xué)院(系)審核意見:主任簽字: 年 月 日 目 錄第一章 需求分析 -3第二章 開發(fā)過程 -32.1系統(tǒng)目標(biāo)-32.2設(shè)計(jì)出友好的界面- -3 2.3實(shí)現(xiàn)基本功能-32.5功能劃分-3第三章 系統(tǒng)設(shè)計(jì)-43.1系統(tǒng)設(shè)計(jì)方法-43.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)-43.3數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)概述-43.4數(shù)據(jù)實(shí)體類型-43.5流程圖-53.6程序中的源代碼-5 第四章 附錄-13第一章 需求分析1.編寫帶頭結(jié)點(diǎn)頭尾指針的單循環(huán)鏈表,并實(shí)現(xiàn)功能如下: 1.編寫該單循環(huán)鏈表的環(huán)境 2.保存數(shù)據(jù) 3.建立密碼,密碼修改 4.單循環(huán)鏈表的位置查找.插入.刪除.排序等操作第二章 開發(fā)過程2.1系統(tǒng)目標(biāo)本系統(tǒng)的目標(biāo)是實(shí)現(xiàn)單向鏈表的各種操作,方便用戶對數(shù)據(jù)的各種操作。2.2 設(shè)計(jì)友好界面設(shè)計(jì)友好界面,實(shí)現(xiàn)界面人為化,使系統(tǒng)簡單,使用戶能舒心.方便的實(shí)現(xiàn)自己的操作2.3實(shí)現(xiàn)一些基本功能在單循環(huán)鏈表的某一位置的前面或后面插入某一數(shù)據(jù),刪除單向鏈表中的某一結(jié)點(diǎn),返回某一結(jié)點(diǎn)的位置,實(shí)現(xiàn)升序排序,降序排序的算法,至零,清空等各種算法。2.4功能劃分1.友好界面2.密碼編寫3.修改密碼4.數(shù)據(jù)存盤5.單循環(huán)鏈表的各種操作第三章 系統(tǒng)設(shè)計(jì)3.1系統(tǒng)設(shè)計(jì)的方法 系統(tǒng)設(shè)計(jì)是把需求轉(zhuǎn)化為軟件系統(tǒng)的最重要的環(huán)節(jié)。系統(tǒng)設(shè)計(jì)的優(yōu)劣在根本上決定了軟件系統(tǒng)的質(zhì)量。系統(tǒng)設(shè)計(jì)的五個(gè)方面的要求:體系結(jié)構(gòu)設(shè)計(jì),模塊設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)與算法設(shè)計(jì),用戶界面設(shè)計(jì)。3.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)3.2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)概述 數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計(jì)算的程序設(shè)計(jì)問題中計(jì)算機(jī)的操作對象以及他們之間的關(guān)系和操作等的學(xué)科?!皵?shù)據(jù)結(jié)構(gòu)”的研究不僅涉及到計(jì)算機(jī)硬件的研究范圍,而且和計(jì)算機(jī)軟件的研究有著更密切的關(guān)系,無論是編譯程序還是操作系統(tǒng),都涉及到數(shù)據(jù)單元在存儲(chǔ)器中的分配問題。良好的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),可以提高數(shù)據(jù)信息的存儲(chǔ)效率,保證數(shù)據(jù)信息的完整性和一致性。同時(shí),一個(gè)合理的數(shù)據(jù)結(jié)構(gòu)有利于程序的實(shí)現(xiàn)。這里選用TURBOC2作為編譯環(huán)境。3.2.2數(shù)據(jù)實(shí)體類型節(jié)點(diǎn)定義:每個(gè)節(jié)點(diǎn)包括數(shù)據(jù)域data,指針域next。 Datanext 鏈表定義:鏈表S,頭指針Head,尾指針tail Data headData Tail 進(jìn)入界面1,輸入密碼3.3 流程圖 界面2,執(zhí)行各項(xiàng)操作定位輸出定點(diǎn)后繼頭節(jié)點(diǎn)位判空計(jì)算個(gè)數(shù)指定輸出修 改 密 碼 存 儲(chǔ) 數(shù) 據(jù)進(jìn)入界面3,謝謝使用3.4 界面中單鏈表的部分算法:3.4.1 void gaimi() int i=0; char ch,a6,b6; printf( 請輸入原始密碼:); ch=getchar(); gets(a); while(yanzheng1(a)!=6) printf( 請輸入原始密碼:); gets(a); while(1) printf( 輸入新設(shè)密碼:); gets(a); printf( 再次輸入新設(shè)密碼:); gets(b); while(ai=bi) i+; if(i=5)break; else i=0; xiugai(a);void xiugai(char *x) FILE *fp; fp=fopen(mima,wb); fputs(x,fp); printf(t*n); printf(t*n); printf(t*密碼修改成功!* *n);printf(“*任意鍵繼續(xù)操作*n); printf(t*n); getch(); fclose(fp);int yanzheng1(char *x) FILE *fp; int i=0; char ch; if(fp=fopen(mima,r)=NULL) printf(無密碼.n); ch=fgetc(fp); while(ch!=EOF) if(xi=ch) i+; ch=fgetc(fp); if(i=5) printf( 密碼正確.n); else printf( 密碼錯(cuò)誤.n); fclose(fp); return(i);void Insbefore(LNodelist *s)/*在鏈表中一個(gè)結(jié)點(diǎn)前插入一個(gè)數(shù)據(jù)5*/ LNode *p,*q,*t; int x,y,i; printf(輸入該鏈表中一個(gè)結(jié)點(diǎn)的值:n); scanf(%d,&x); p=s-head;t=p-next; if(s-head-data=x) printf(輸入要插入的數(shù)據(jù):n); scanf(%d,&y); q=(LNode *)malloc(sizeof(LNode); q-data=y; q-next=s-head; s-tail-next=q; s-head=q; else while(p-next-data!=x&p-next!=s-head) p=p-next;t=t-next;if(p-next-data!=x&p-next=s-head) printf(數(shù)據(jù)插入位不存在!n);else printf(輸入要插入的數(shù)據(jù):n); scanf(%d,&y); q=(LNode *)malloc(sizeof(LNode); q-data=y; q-next=t; p-next=q; printf(輸出插入數(shù)據(jù)后的鏈表:n); Printlink(s); printf(是否儲(chǔ)存數(shù)據(jù).(0:否1:是)n); scanf(%d,&i); if(i=1) chucun(s); else printf(數(shù)據(jù)沒有存儲(chǔ)!n);void InsAfter(LNodelist *s) /*在鏈表中的一個(gè)結(jié)點(diǎn)后插入一個(gè)數(shù)據(jù)6*/ LNode *p,*q,*t; int x,y,i; printf(輸入該鏈表中的一個(gè)結(jié)點(diǎn)的值:n); scanf(%d,&x); p=s-head;t=p-next; while(p-data!=x&p-next!=s-head) p=p-next;t=t-next; if(p-data!=x&p-next=s-head)printf(輸入的數(shù)據(jù)不存在!n); else printf(輸入要插入的數(shù)據(jù):n); scanf(%d,&y); q=(LNode *)malloc(sizeof(LNode); q-data=y; q-next=t; p-next=q; printf(輸出插入數(shù)據(jù)后的鏈表:n); Printlink(s); printf(是否儲(chǔ)存數(shù)據(jù).(0:否1:是)n); scanf(%d,&i); if(i=1) chucun(s); else printf(數(shù)據(jù)沒有存儲(chǔ)!n);void Setcurelem(LNodelist *s) /*鏈表中的一個(gè)結(jié)點(diǎn)用另一個(gè)數(shù)據(jù)替換7*/ LNode *p,*q,*t; int x,y,i; printf(輸入鏈表中被替換的數(shù)據(jù):n); scanf(%d,&x); p=s-head;t=p-next; while(p-data!=x&p-next!=s-head) p=p-next;t=t-next; if(p-data!=x)printf( 被更新的數(shù)據(jù)不存在!); else printf(輸入新數(shù)據(jù):n); scanf(%d,&y); p-data=y; printf(輸出被替換后的單循環(huán)鏈表:n); Printlink(s); printf(是否儲(chǔ)存數(shù)據(jù).(0:否1:是)n); scanf(%d,&i); if(i=1) chucun(s); else printf(數(shù)據(jù)沒有存儲(chǔ)!n); void Getcurelem(LNodelist *s) /*反回鏈表中的一個(gè)結(jié)點(diǎn)8*/ LNode *p; int x; printf(輸入鏈表一個(gè)結(jié)點(diǎn)值:n); scanf(%d,&x); p=s-head; while(p-data!=x&p-next!=s-head) p=p-next; if(p-data!=x)printf(要輸出的結(jié)點(diǎn)不存在!); else printf(輸出該結(jié)點(diǎn)的值:n); printf(%d,p-data); void listempt(LNodelist *s) /*判鏈空9*/ LNode *p;int i=0; p=s-head; while(p-next!=s-head&p!=NULL) p=p-next;i+; if(i=0)printf(鏈表為空!); else printf(鏈表不為空!);void lengthlist(LNodelist *s) /*輸出單循環(huán)鏈表中元素的個(gè)數(shù)10*/ LNode *p; int i=0; p=s-head; if(p=NULL) printf(該鏈表為空鏈表!); else while(p-next!=s-head) p=p-next;i+; printf(輸出鏈表中元素的個(gè)數(shù):n); printf(%d,i); void gethead(LNodelist *s) /*輸出第一個(gè)結(jié)點(diǎn)的位置11*/ printf(輸出第一個(gè)結(jié)點(diǎn)的位置:n); printf(%d,s-head-data);void Nextpos(LNodelist *s) /*在鏈表中的一個(gè)結(jié)點(diǎn)直接后繼位置14*/ LNode *p,*q; int x,y; printf(輸入鏈表中一個(gè)結(jié)點(diǎn)值:n); scanf(%d,&x); p=s-head; while(p-data!=x&p-next!=s-head) p=p-next; if(p-data!=x)printf(該結(jié)點(diǎn)不存在!);exit(0); else printf(輸出該結(jié)點(diǎn)的后繼位置:n); printf(%d,p-next-data); void Locatepos(LNodelist *s) /*輸出鏈表中第i個(gè)結(jié)點(diǎn)的位置15*/ LNode *p,*q; int i,j=1; printf(輸入鏈表任意一結(jié)點(diǎn)的下標(biāo)值:); scanf(%d,&i); p=s-head; while(j!=i&p!=s-tail) p=p-next;j+; if(p=s-tail) if(j=i) printf( 輸出該結(jié)點(diǎn)的值:n); printf(%d,p-data); else printf(輸入位置有誤!n); else printf(輸出該結(jié)點(diǎn)的值:n); printf(%d,p-data); void paixu(LNodelist *s)/*單循環(huán)鏈表排序16*/ LNode *p,*q,*t;int i; p=s-head; printf(請選擇操作號:n1:從大到小排序.n2:從小到大排序.n); scanf(%d,&i); switch(i) case 1: printf(單循環(huán)鏈表從大到小排序:n); while(p-next!=s-head) q=p-next;while(q!=s-head) if(p-datadata) t=p-data;p-data=q-data;q-data=t; else q=q-next; p=p-next; printf(從大到小輸出單循環(huán)鏈表:n); Printlink(s); break; case 2: while(p-next!=s-head) q=p-next; while(q!=s-head) if(p-dataq-data) t=p-data;p-data=q-data;q-data=t; else q=q-next; p=p-next; printf(從小到大輸出單循環(huán)鏈表:n); Printlink(s); break; default: printf(輸入的操作號不正確!n); printf(是否儲(chǔ)存數(shù)據(jù).(0:否1:是)n); scanf(%d,&i); if(i=1) chucun(s); else printf(數(shù)據(jù)沒有存儲(chǔ)!n);int chucun(LNodelist *s) /*存儲(chǔ)數(shù)據(jù)*/ FILE *fp=NULL; char filename10,ch; LNode *p=s-head; if(s=NULL) printf(鏈表不存在,請建立鏈表:); getch(); return 0; printf(輸入文件名:); scanf(%s,filename); while(fp=fopen(filename,r)!=NULL) fclose(fp); printf(鏈表已存在,請從新建立鏈表n); ch=getchar(); printf(請輸入文件名:); scanf(%s,filename); fp=fopen(filename,w); while(p-next!=s-head) fwrite(p,sizeof(LNode),1,fp); p=p-next; fwrite(p,sizeof(LNode),1,fp); fclose(fp); printf(存儲(chǔ)成功.n); return(1); int openfile(LNodelist *s)FILE *fp; char filename10; LNode *p=NULL,*q=NULL; p=s-head; printf(請輸入要打開的文件名:); sca
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 民航機(jī)場行李搬運(yùn)與安全監(jiān)管協(xié)議
- 寵物銷售服務(wù)合同模板
- 監(jiān)控室接線員培訓(xùn)
- 樂博樂博培訓(xùn)
- 簡單急救知識(shí)培訓(xùn)
- AIDS合并結(jié)核的護(hù)理
- 幼兒園灶房食品安全培訓(xùn)
- 腫瘤免疫治療機(jī)制與應(yīng)用
- 撓骨中段骨折課件
- 文化創(chuàng)意產(chǎn)業(yè)園區(qū)創(chuàng)意產(chǎn)業(yè)園區(qū)發(fā)展規(guī)劃與實(shí)施路徑研究報(bào)告
- 會(huì)計(jì)電算化基礎(chǔ)知識(shí)2025年考試試卷及答案
- 2024年威寧自治縣在職在編教師考調(diào)真題
- 小學(xué)生反洗錢課件
- 酒店前廳部管理制度
- 2022~2023學(xué)年廣東廣州天河區(qū)初一下學(xué)期期末語文試卷(標(biāo)準(zhǔn)版)
- 廣東省深圳市光明區(qū)2025年八年級下學(xué)期期末數(shù)學(xué)試題及答案
- 黔西南州工業(yè)投資(集團(tuán))有限公司招聘筆試題庫2025
- 建設(shè)工程總包合同EPC課件
- 初中英語跨學(xué)科項(xiàng)目設(shè)計(jì)心得體會(huì)
- 《斯大林格勒戰(zhàn)役》課件
- 監(jiān)控系統(tǒng)培訓(xùn)資料
評論
0/150
提交評論