資源描述:
《線性表順序存儲運算的算法實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、昆明理工大學(xué)信息工程與自動化學(xué)院學(xué)生實驗報告(2011—2012學(xué)年第1學(xué)期)課程名稱:數(shù)據(jù)結(jié)構(gòu)開課實驗室:信自樓4442011年10月8日年級、專業(yè)、班學(xué)號姓名成績實驗項目名稱線性表順序存儲運算的算法實現(xiàn)指導(dǎo)教師教師評語教師簽名:年月日一、實驗題目掌握線性表鏈?zhǔn)酱鎯Y(jié)構(gòu)的C語言描述及運算算法的實現(xiàn);體會last域在算法實現(xiàn)所起的作用;理解合理的存儲結(jié)構(gòu)設(shè)計與算法的存在的關(guān)系程序功能:1、主程序2、鏈表的建立3、鏈表的數(shù)據(jù)插入4、鏈表的數(shù)據(jù)刪除5、鏈表的數(shù)據(jù)輸出二、所用儀器、材料(設(shè)備名稱、型號
2、、規(guī)格等)兼容計算機一臺Visualc++三、實驗方法、步驟問題提出算法設(shè)計編寫程序調(diào)試運行結(jié)果測試操作菜單線性表的刪除線性表的輸出及表長線性表的輸入線性表的置空線性表的查找線性表的插入四、實驗過程原始記錄(程序清單)#include#includetypedefintdatatype;/*設(shè)typedef(定義)datatype(數(shù)據(jù)類型)為int*/#include#include//包含清屏函數(shù)的類#include
3、#definemax300//線性表的最大長度設(shè)為300typedefstruct{intdata[max];intlast;}sequenlist;/*順序表的名稱sequenlist*/intcaidan()/*菜單函數(shù)*/{intc=0;printf("-----------順序表的基本操作運算--------------");printf("1:線性表的置空2:線性表的輸入");printf("3:線性表的輸出4:線性表的插入");printf("5:線性
4、表的查找6:線性表的刪除");printf("0:退出系統(tǒng)");printf("-------------------------------------------------");printf("請輸入選項【0-6】:");do{scanf("%c",&c);}while(!(c>='0'&&c<'7'));returnc;}voidsetnull(sequenlist*p){p->last=0;}intinput(sequenlist*p,intx){inti;//循環(huán)變量in
5、tn;//輸入數(shù)據(jù)的個數(shù)printf("請輸入要輸入的數(shù)據(jù)個數(shù):");scanf("%d",&n);if(p->last>=max){printf("順序表格已滿,請退出運行");}for(i=1;i<=n;i++){printf("第%d個:",i);scanf("%d",&p->data[i-1]);p->last++;}return(n-1);}voidoutput(sequenlist*p){printf("順序表的內(nèi)容為:");printf("表長為:%d",p->la
6、st);intb;printf("表中的元素為:");for(b=0;blast;b++)printf("%d",p->data[b]);printf("");}intinsert(sequenlist*p,intx,inti){printf("輸入要插入的元素位置:");scanf("%d",&i);printf("輸入要插入的元素:");scanf("%d",&x);intj;if(i<1
7、
8、i>p->last+1){printf("選擇插入的位置錯誤!");return0;
9、}if(p->last>=max){printf("順序表格已滿.");}for(j=p->last-1;j>=i-1;j--)//從第i個結(jié)點開始后移p->data[j+1]=p->data[j];p->data[i-1]=x;p->last++;return(1);}voidsearch(sequenlist*p,intt){printf("輸入要查找的位置:");scanf("%d",&t);inti;for(i=0;ilast;i++){if(i=t){printf("該元素為:
10、%d",&p->data[i]);break;}if(i==p->last)printf("錯誤");}}voidDelete(sequenlist*p,inti)//刪除{intj;if(i<1
11、
12、i>p->last){printf("非法位置!");exit(0);}else{for(j=i;j<=p->last;j++)p->data[j-1]=p->data[j];p->last--;}}voidmain(){sequenlist*p;intkey=1;inti,x=0;intt