資源描述:
《軟件技術(shù)基礎(chǔ)-實(shí)驗(yàn)指導(dǎo)書.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、《軟件技術(shù)基礎(chǔ)》實(shí)驗(yàn)指導(dǎo)書目錄《軟件技術(shù)基礎(chǔ)》上機(jī)實(shí)驗(yàn)的目的和要求3實(shí)驗(yàn)一、單鏈表的插入和刪除4實(shí)驗(yàn)二、二叉樹操作8實(shí)驗(yàn)三、圖的遍歷操作12實(shí)驗(yàn)四、排序19實(shí)驗(yàn)五、查找25《軟件技術(shù)基礎(chǔ)》上機(jī)實(shí)驗(yàn)的目的和要求通過上機(jī)實(shí)驗(yàn)加深對(duì)課程內(nèi)容的理解,增加感性認(rèn)識(shí),提高軟件設(shè)計(jì)、編寫及調(diào)試程序的能力。要求所編的程序能正確運(yùn)行,并提交實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)報(bào)告的基本要求為:1、需求分析:陳述程序設(shè)計(jì)的任務(wù),強(qiáng)調(diào)程序要做什么,明確規(guī)定:(1)輸入的形式和輸出值的范圍;(2)輸出的形式;(3)程序所能達(dá)到的功能;(4)測試數(shù)據(jù):包括正確的輸入輸出結(jié)果和錯(cuò)誤的輸入及輸出結(jié)果。2、概要設(shè)計(jì):說明用到的軟件技術(shù)基礎(chǔ)定義、主
2、程序的流程及各程序模塊之間的調(diào)用關(guān)系。3、詳細(xì)設(shè)計(jì):提交帶注釋的源程序或者用偽代碼寫出每個(gè)操作所涉及的算法。4、調(diào)試分析:(1)調(diào)試過程中所遇到的問題及解決方法;(2)算法的時(shí)空分析;(3)經(jīng)驗(yàn)與體會(huì)。5、用戶使用說明:說明如何使用你的程序,詳細(xì)列出每一步操作步驟。6、測試結(jié)果:列出對(duì)于給定的輸入所產(chǎn)生的輸出結(jié)果。若有可能,測試隨輸入規(guī)模的增長所用算法的實(shí)際運(yùn)行時(shí)間的變化。實(shí)驗(yàn)一、單鏈表的插入和刪除一、目的:了解和掌握線性表的邏輯結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),掌握單鏈表的基本算法及相關(guān)的時(shí)間性能分析。二、要求:建立一個(gè)數(shù)據(jù)域定義為字符串的單鏈表,在鏈表中不允許有重復(fù)的字符串;根據(jù)輸入的字符串,先找到相應(yīng)
3、的結(jié)點(diǎn),后刪除之。三、示例程序:#include"stdio.h"#include"string.h"#include"stdlib.h"#include"ctype.h"typedefstructnode//定義結(jié)點(diǎn){chardata[10];//結(jié)點(diǎn)的數(shù)據(jù)域?yàn)樽址畇tructnode*next;//結(jié)點(diǎn)的指針域}ListNode;typedefListNode*LinkList;//自定義LinkList單鏈表類型LinkListCreatListR1();//函數(shù),用尾插入法建立帶頭結(jié)點(diǎn)的單鏈表ListNode*LocateNode();//函數(shù),按值查找結(jié)點(diǎn)voidDeleteLis
4、t();//函數(shù),刪除指定值的結(jié)點(diǎn)voidprintlist();//函數(shù),打印鏈表中的所有值voidDeleteAll();//函數(shù),刪除所有結(jié)點(diǎn),釋放內(nèi)存//==========主函數(shù)==============voidmain(){char*ch;charnum[4];charb[8];ch=&b[0];LinkListhead;head=CreatListR1();//用尾插入法建立單鏈表,返回頭指針printlist(head);//遍歷鏈表輸出其值printf("Deletenode(y/n):");//輸入“y”或“n”去選擇是否刪除結(jié)點(diǎn)scanf("%s",num);if(st
5、rcmp(num,"y")==0
6、
7、strcmp(num,"Y")==0){printf("PleaseinputDelete_data:");scanf("%s",ch);//輸入要?jiǎng)h除的字符串DeleteList(head,ch);printlist(head);}DeleteAll(head);//刪除所有結(jié)點(diǎn),釋放內(nèi)存}//==========用尾插入法建立帶頭結(jié)點(diǎn)的單鏈表===========LinkListCreatListR1(void){char*ch;chara[8];ch=&a[0];LinkListhead=(LinkList)malloc(sizeof(ListNode
8、));//生成頭結(jié)點(diǎn)ListNode*s,*r,*pp;r=head;r->next=NULL;printf("Input#toend");//輸入“#”代表輸入結(jié)束printf("PleaseinputNode_data:");scanf("%s",ch);//輸入各結(jié)點(diǎn)的字符串while(strcmp(ch,"#")!=0){pp=LocateNode(head,ch);//按值查找結(jié)點(diǎn),返回結(jié)點(diǎn)指針if(pp==NULL){//沒有重復(fù)的字符串,插入到鏈表中s=(ListNode*)malloc(sizeof(ListNode));strcpy(s->data,ch);r->next=s
9、;r=s;r->next=NULL;}printf("Input#toend");printf("PleaseinputNode_data:");scanf("%s",ch);}returnhead;//返回頭指針}//==========按值查找結(jié)點(diǎn),找到則返回該結(jié)點(diǎn)的位置,否則返回NULL==========ListNode*LocateNode(LinkListhead,char*key){