實驗1 線性表及其應(yīng)用實驗報告_第1頁
實驗1 線性表及其應(yīng)用實驗報告_第2頁
實驗1 線性表及其應(yīng)用實驗報告_第3頁
實驗1 線性表及其應(yīng)用實驗報告_第4頁
實驗1 線性表及其應(yīng)用實驗報告_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

暨南大學(xué)本科實驗報告專用紙課程名稱數(shù)據(jù)結(jié)構(gòu)成績評定實驗項目名稱線性表及其應(yīng)用指導(dǎo)教師王曉明實驗項目編號實驗一實驗項目類型綜合性實驗地點南海樓601學(xué)生姓名朱芷漫學(xué)號2010051875學(xué)院信息科學(xué)技術(shù)學(xué)院系計算機專業(yè)計算機科學(xué)與技術(shù)實驗時間2011年9月7日18:30午~9月7日20:30午溫度℃濕度實驗?zāi)康暮鸵髮嶒災(zāi)康模菏炀氄莆站€性表基本操作的實現(xiàn)及應(yīng)用實驗要求:在上機前寫出全部源程序完畢并調(diào)試完畢。實驗原理和主要內(nèi)容1.建立4個元素的順序表SqList={2,3,4,5},實現(xiàn)順序表的基本操作;在SqList={2,3,4,5}的元素4與5之間插入一個元素9,實現(xiàn)順序表插入的基本操作;在SqList={2,3,4,9,5}中刪除指定位置(i=3)上的元素,實現(xiàn)順序表刪除的操作。2.利用順序表完成一個班級的一個學(xué)期的課程的管理:能夠增加、刪除、修改學(xué)生的成績記錄。三、主要儀器設(shè)備PC機,WindowsXP操作平臺,VisualC++調(diào)試分析學(xué)生課程管理系統(tǒng)的調(diào)試過程中發(fā)現(xiàn)一些錯誤,主要是參數(shù)設(shè)置的問題,經(jīng)過修改,錯誤得到排除。測試結(jié)果順序表學(xué)生課程管理系統(tǒng)附錄(源程序)1.順序表的操作#include<iostream.h>#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2typedefintStatus;typedefintElemType;#defineLIST_INIT_SIZE10#defineLISTINCREMENT2typedefstructshunxubiao{ ElemType*list; intsize; intMaxsize;}SqList;intInitList_Sq(SqList&L){//構(gòu)造一個空的線性表L。L.list=newElemType[LIST_INIT_SIZE];if(!L.list)returnOVERFLOW;//存儲分配失敗L.size=0; //長度為0L.Maxsize=LIST_INIT_SIZE;//初始存儲容量returnOK;}//InitList_SqintInsertList_Sq(SqList&L,inti,ElemTypee){ ElemType*p,*q; if(i<1||i>L.Maxsize+1)returnERROR; q=&(L.list[i-1]);//q指示插入位置 for(p=&(L.list[L.Maxsize-1]);p>=q;--p) *(p+1)=*p;//插入位置及之后的元素右移*q=e;//插入e ++L.size;//表長增1 returnOK;}//ListInsert_SqintLocateElem_Sq(SqListL,ElemTypee){//在順序表中查詢數(shù)據(jù)元素e,若存在,則返回它的位序,否則返回0 inti=1;//i的初值為第1元素的位序 ElemType*p=L.list;//p的初值為第1元素的存儲位置 while(i<=L.size&&*p!=e) { ++i; ++p; } if(i<=L.size)returni; elsereturn0;}StatusInsertList_Sq(SqList&L,ElemTypee,ElemTypef,ElemTypeg){ inti=LocateElem_Sq(L,e); intj=LocateElem_Sq(L,f); if(i==j-1) { InsertList_Sq(L,j,g); returnOK; } elsereturnERROR;}intGetList_Sq(SqListL,inti){ if(i>0&&i<=L.size) { returnL.list[i]; } else returnERROR;}StatusListDelete_Sq(SqList&L,inti,ElemType&e){ ElemType*p,*q; if((i<1)||(i>L.Maxsize))returnERROR; p=&(L.list[i-1]);//p為被刪除元素的位置 e=*p;//被刪除元素的值賦給e q=L.list+L.size-1;//表尾元素的位置 for(++p;p<=q;++p) *(p-1)=*p;//被刪除元素之后的元素左移 --L.size;//表長減1 returnOK;}//ListDelete_SqvoidCreate_Sq(SqList&L){ cout<<"創(chuàng)建順序表"<<endl; cout<<"請輸入元素個數(shù):"; intcount; cin>>count; for(inti=0;i<count;i++) { cout<<"請輸入第"<<i+1<<"個數(shù):"; cin>>L.list[i]; ++L.size; }}voidPrint_Sq(SqList&L){ cout<<"輸出順序表:"<<endl; for(inti=0;i<L.size;i++) cout<<L.list[i]<<"";}voidmain(){ SqListmyList; ElemTypee,f,g,sc; InitList_Sq(myList); Create_Sq(myList); cout<<"請輸入要插入順序表的元素:"<<endl; cin>>g; cout<<"請輸入新插入元素在順序表中哪兩個元素之間:"<<endl; cin>>e>>f; if(!InsertList_Sq(myList,e,f,g)) cout<<"插入的位置不對!"<<endl; cout<<"刪除一個元素,請輸入要刪除的位序:"<<endl; intwx; cin>>wx; if(!ListDelete_Sq(myList,wx,sc)) cout<<"刪除元素失??!"<<endl; Print_Sq(myList);}2.學(xué)生課程管理系統(tǒng)#include<iostream>#include<windows.h>#include<conio.h>usingnamespacestd;constintLIST_INIT_SIZE=3;constintLISTINCREMENT=5;structstudent{ intStuNum; intCouNum; intScore; char*name;};classStuCourse{ student*L; intlength; intlistsize; public: StuCourse(); voidListAdd(studente); voidListDelete(inti); voidListRewrite(studente); voidListPrint(inti); voidListPrintAll(); voidcopy(student*a,student*b);};StuCourse::StuCourse() { L=newstudent[LIST_INIT_SIZE]; if(!L) { cout<<"內(nèi)存不足"<<endl; } else { length=0;listsize=LIST_INIT_SIZE; }}voidStuCourse::ListAdd(studente) { student*p; intt,n,i; boolflag=true; if(e.StuNum<1) cout<<"插入位置錯誤"<<endl; else { for(t=0;t<length&&(L+t)->StuNum<e.StuNum;t++); if((L+t)->StuNum==e.StuNum) cout<<"此學(xué)號已存在"<<endl; else { if(length==listsize) { p=newstudent[listsize+LISTINCREMENT]; if(!p) { cout<<"內(nèi)存不足"<<endl;flag=false; } else { for(i=0;i<length;i++) copy(p+i,L+i); deleteL;L=p;listsize+=LISTINCREMENT; } } if(flag==true) { if(t<length) for(n=length;n>t;n--) copy(L+n,L+n-1); copy(L+t,&e);length++; } } }}voidStuCourse::ListDelete(inti){ intt; for(t=0;t<length&&(L+t)->StuNum!=i;t++); if(t==length) cout<<"此記錄不存在"<<endl; else { while(t<length) copy(L+t,L+t+1);t++; length--; }}voidStuCourse::ListRewrite(studente){ intt; for(t=0;t<length&&(L+t)->StuNum!=e.StuNum;t++); if((L+t)->StuNum==e.StuNum) copy(L+t,&e); else cout<<"此記錄不存在"<<endl;}voidStuCourse::ListPrint(inti) { intt; for(t=0;t<length&&(L+t)->StuNum!=i;t++); if((L+t)->StuNum!=i) cout<<"此記錄不存在"<<endl; else { cout<<"學(xué)號\t姓名\t\t課程號\t成績"<<endl; cout<<(L+t)->StuNum<<'\t'<<(L+t)->name<<'\t'<<(L+t)->CouNum<<"\t\t"<<(L+t)->Score<<endl; }}voidStuCourse::ListPrintAll(){ inti; cout<<"學(xué)號\t姓名\t\t課程號\t成績"<<endl; for(i=0;i<length;i++) cout<<(L+i)->StuNum<<'\t'<<(L+i)->name<<'\t'<<(L+i)->CouNum<<"\t\t"<<(L+i)->Score<<endl;}voidStuCourse::copy(student*a,student*b){ a->StuNum=b->StuNum; a->CouNum=b->CouNum; a->Score=b->Score; a->name=b->name;}voidwrite(inta,char*p,intb,intc,student&d){ d.StuNum=a; =p; d.CouNum=b; d.Score=c;}intmain(){ inti,j,k,n=0; studente; charc='a'; charname[50][20]; StuCourseClassA; while(c!='q'&&c!='Q') { cout<<"\t歡迎使用學(xué)生成績管理系統(tǒng)"<<endl; cout<<"A.打印成績單\t\tB.查詢成績"<<endl; cout<<"C.添加記錄\t\tD.刪除記錄"<<endl; cout<<"E.修改記錄\t\tQ.退出"<<endl; c=getch(); switch(c) { case'a': case'A':ClassA.ListPrintAll();getch();break; case'b': case'B':cout<<"請輸入要查詢的學(xué)號:";cin>>i;ClassA.ListPrint(i);getch();break; case'c': case'C':cout<<"請輸入添加記錄:";cin>>i>>name[n]>>j>>k;write(i,name[n],j,k,e); ClassA.ListAdd(e);n++;getch();break; case'

溫馨提示

  • 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

提交評論