數(shù)據(jù)結(jié)構(gòu)實驗2_第1頁
數(shù)據(jù)結(jié)構(gòu)實驗2_第2頁
數(shù)據(jù)結(jié)構(gòu)實驗2_第3頁
免費預(yù)覽已結(jié)束,剩余6頁可下載查看

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)實驗報告實驗序號:2實驗項目名稱:順序表的操作學(xué)號姓名專業(yè)、班級實驗地點指導(dǎo)教師實驗時間一、實驗?zāi)康募耙?. 掌握線性表的順序存儲類型;2. 熟練掌握順序表的基本操作和具體的函數(shù)實現(xiàn)。二、實驗設(shè)備(環(huán)境)及要求微型計算機(jī);windows 操作系統(tǒng);Microsoft Visual Studio 6.0 集成開發(fā)環(huán)境。三、實驗內(nèi)容與步驟1. 設(shè)A、B均為用數(shù)組實現(xiàn)的List類型的順序表,試設(shè)計一個函數(shù)Alternate( A,B),從表 A 中第 1 個元素開始,交替地用表A 和表 B 中元素組成一個新表。2. 順序表表示和實現(xiàn)線性表的如下:# define LIST_INIT_SIZ

2、E 10# define LISTINCREMENT 5 typedef structElemType *elem; int length ;int ListSize; sqlist;int InitList_sq(sqlist *l) /*initial the list l*/l->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); if (!l->elem)printf("無法分配空間!");return 1;elsel->length=0;l->ListSize=LIST_INIT

3、_SIZE;printf("ok");return 0;void main()sqlist L;InitList_sq(&L);【要求】 1、實現(xiàn)順序表的插入、刪除、按值查找等基本操作;2、假設(shè)構(gòu)建的是非遞增有序順序表,設(shè)計算法實現(xiàn)從該有序順序表中刪除所有其值重復(fù)的元素,使得表中所有元素的值均不同。四、實驗結(jié)果與數(shù)據(jù)處理1.2.詳細(xì)記錄程序在調(diào)試過程中出現(xiàn)的問題及解決方法。記錄程序執(zhí)行的結(jié)果(貼圖)。五、分析與討論對上機(jī)實踐結(jié)果進(jìn)行分析,上機(jī)的心得體會。五、教師評語成績簽名:日期:附源程序清單:1.#include<stdio.h>int main(vo

4、id)void Alternate(int * a,int * b);int * p;int i;int A5=1,3,5,7,9;int B5=2,4,6,8,10;printf("List A:n");for(i=0;i<5;i+)printf("%d ",Ai);printf("n");printf("List B:n");for(i=0;i<5;i+)printf("%d ",Bi);printf("n");printf("Final List:

5、n");Alternate(A,B);return 0;void Alternate(int * a,int * b)int i;int * p;int c10;p=c;for(i=0;i<10;i+)if(i%2=0)*(p+i)=*(a+i/2);else*(p+i)=*(b+(i-1)/2);for(i=0;i<10;i+)printf("%d ",*(p+i);printf("n");2.#include<iostream># define LIST_INIT_SIZE10# define LISTINCREME

6、NT5using namespace std;typedef structint* elem;/int* 型元素int length;/ 順序表的實際長度int Listsize;/ 順序表的最大長度sqlist;/1.初始化int InitList_sq(sqlist *l)int n;int* p;l->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int);if (!l->elem)printf(" 無法分配空間!");return 1;elsel->length=0;l->Listsize=LIST_INI

7、T_SIZE;printf(" 請輸入順序表元素數(shù)(1-10):");cin>>n;p=l->elem;/p 指向頭指針for(int i=0;i<n;i+)/逐個賦值cin>>*p;p+;l->length+;return 0;/2.輸出函數(shù)void put(sqlist &list)int i;for(i=0;i<list.length;i+)cout<<list.elemi<<"t"cout<<endl;/3.查找函數(shù)void locateElem(sqli

8、st &list)int i,j=0,b;cout<<" 請輸如要查找的字符:n"cin>>b;for(i=0;i<list.length;i+)if(list.elemi=b)j=i+1;break;if(j)cout<<" 該數(shù)字的位置是:"<<j<<endl;elsecout<<" 很抱歉,表中沒有這個數(shù)字,請重試!"<<endl;/4.插入函數(shù)void insert(sqlist &list)int i;cout<&

9、lt;" 您想在第幾位插入數(shù)字:n"cin>>i;int x;cout<<" 請輸入要插入的數(shù)字:n"cin>>x;int j;if(i<0|i>list.length)cout<<" 位置錯誤 "<<endl;put(list);elsefor(j=list.length;j>=i;j-)list.elemj=list.elemj-1;list.elemj=x;list.length+;cout<<" 插入操作完成后的順序表:&quo

10、t;<<endl;put(list);/5.刪除函數(shù)void delete1(sqlist &list)/ 刪除第 i 個位置的數(shù)字的函數(shù)int i,b;cout<<" 請輸入你想要刪除數(shù)據(jù)的位置:"<<endl;cin>>i;if(i<0|i>list.length)cout<<" 輸入錯誤! "<<endl;return;elseb=list.elemi-1;for(i=i-1;i<list.length-1;i+)list.elemi=list.ele

11、mi+1;-list.length;cout<<" 需要刪除的元素是:"<<b<<endl;cout<<" 刪除操作完成后的順序表是:"<<endl;put(list);void delete2(sqlist &list)/ 刪除指定數(shù)字的函數(shù)int b;cout<<" 輸入您想刪除的數(shù)字:"<<endl;cin>>b;int i,j=0;for(i=0;i<list.length;i+)if(list.elemi=b)j=i

12、+1;break;if(j!=0)for(;i<list.length-2;i+)list.elemi=list.elemi+1;-list.length;cout<<" 該位置是第 "<<i<<" 位 "<<endl;cout<<" 刪除操作完成后的順序表是:"<<endl;put(list);elsecout<<" 很遺憾,表中沒有找到此數(shù)字,刪除不成功,請重試!"<<endl;void delete3(sql

13、ist &list)/ 刪除重復(fù)數(shù)字的函數(shù)if ( list.length<=0 )printf( "List is empty!");exit(1);int i=0,j,k;int temp;while (i<=list.length) / 循環(huán)檢測j=i+1;temp=list.elemi;while (j<=list.length )/對于每一個i, 重復(fù)檢測一遍后續(xù)元素if ( temp = list.elemj ) / 如果相等 , 后續(xù)元素前移for (k=j+1;k<=list.length;k+)list.elemk-1 =l

14、ist.elemk;list.length-;else j+;i+;/檢測完 list.elemi, 檢測下一個put(list);/-int main()int flag;sqlist l;InitList_sq(&l);put(l);cout<<endl<<"*"<<endl;cout<<" 請輸入要進(jìn)行的操作序號cout<<"1. 插入字符 "<<endl<<"2.:n"查找數(shù)字"<<endl<<

15、;"3.刪除第i 位數(shù)字"<<endl<<"4.刪除指定數(shù)字"<<endl<<"5. 刪除重復(fù)數(shù)字"<<endl<<"0. 退出 "<<endl<<endl;cin>>flag;doswitch(flag)case 1:insert(l);break;case 2:locateElem(l);break;case 3:delete1(l);break;case 4:delete2(l);break;case 5:delete3(l);break;default:cout<<" 請重新輸入 |代碼錯誤 "<<endl;cout<<"* *"<<endl;cout<<" 請輸入要進(jìn)行的操作序號cout<<"1. 插入字符"<<endl<<"

溫馨提示

  • 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

提交評論