數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)2_第1頁
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)2_第2頁
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)2_第3頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

2、NIT_SIZE 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=L

3、IST_INIT_SIZE;printf("ok");return 0;void main()sqlist L;InitList_sq(&L);【要求】 1、實(shí)現(xiàn)順序表的插入、刪除、按值查找等基本操作;2、假設(shè)構(gòu)建的是非遞增有序順序表,設(shè)計(jì)算法實(shí)現(xiàn)從該有序順序表中刪除所有 其值重復(fù)的元素,使得表中所有元素的值均不同。四、實(shí)驗(yàn)結(jié)果與數(shù)據(jù)處理五、分析與討論通過本次實(shí)驗(yàn)了解了線性表的順序存儲結(jié)構(gòu)。實(shí)驗(yàn)過程中具體函數(shù)的實(shí)現(xiàn)遇到了問題,但通過百度與總結(jié)前輩的經(jīng)驗(yàn)解決了。五、教師評語簽名:日期:成績附源程序清單:1.#include<stdio.h>#include

4、<stdlib.h>#define LIST_INIT_SIZE 10#define LISTINCREMENT 5typedef int ElemType;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(" 無法分配空 間 !&q

5、uot;);return 1;elsel->length=0;l->ListSize=LIST_INIT_SIZE; printf("okn"); return 0;void Alternate(sqlist *A,sqlist*B)ElemType i;sqlist list;sqlist *C;C=&list;InitList_sq(C);C->length=A->length+B->length; while(i)if(C->length>=C->ListSize)ElemType *newbase;newbas

6、e=(ElemType*)realloc(C->elem, (C->ListSize+LISTINCREMENT)*sizeof(ElemType);C->elem=newbase;C->ListSize+=LISTINCREMENT;else break; for(i=0;i<C->length;i+)C->elem2*i=A->elemi;C->elem2*i+1=B->elemi;for(i=0;i<C->length;i+)printf("%d ",C->elemi);void main(

7、)ElemType i;sqlist list1,list2,*A,*B;A=&list1;B=&list2;InitList_sq(A);InitList_sq(B);printf(" 請輸 入 A 指向的 5 個(gè)整數(shù): n");for(i=0;i<5;i+)scanf("%d",&A->elemi);A->length=i;printf(" 請輸 入 B 指向的 5 個(gè) 整 數(shù) : n");for(i=0;i<5;i+)scanf("%d",&B->

8、elemi);B->length=i;Alternate(A,B); printf("n");2.#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define LIST_INIT_SIZE 100#define LISINCREMENT 10#define ElemType int#define Status inttypedef struct SqElemType *elem;int length;int listsize;SqList;Status InitLis

9、t(SqList *L)L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType); if(!L->elem)return 0;L->length=0;L->listsize=LIST_INIT_SIZE;return 1;插入/Status ListInsert(SqList *L,int i,ElemType e)int *q,*p; if(i<1|i>L->length)return 0; if(L->length>L->listsize) ElemType *newbas

10、e=(ElemType*)realloc(L->elem,(LIST_INIT_SIZE+LISINCREMENT)*size of(ElemType);if(!newbase)return 0;L->elem=newbase;L->listsize+=(LISINCREMENT);q=&(L->elemi-1); for(p=&(L->elemL->length-1);p>=q;-p)*(p+1)=*p;*q=e;+L->length;return 1;/ 刪 除Status ListDelete(SqList *L,int i

11、,ElemType e)int *p,*q;if(i<1|i>L->length)return 0;p=&(L->elemi-1);e=*p;q=L->elem+L->length-1;for(+p;p<=q;+p)*(p-1)=*p;-L->length;return 1;/ 查 找Status LocateElem(SqList *L, ElemType e)/本算法 實(shí)現(xiàn)查找順序表中 值為 e的元素,如果 查找成功,返回元素位序,否 則返回 0 int i;for(i=0;i<L->length;i+)if(L->

12、elemi=e)printf(" 被 查 找元素的位置 :%2dn",i+1);return i+1;/ 下 標(biāo)為 i 的元素 值 等于 e,返回其位 號 i+1elseprintf(" 沒有該元素 !n");return 0;/ 退出循 環(huán),說明查找失 敗/ 刪除重 復(fù)void DelDouble(SqList *L)int i,j,k;int tmp;if(L->length = 0 )printf(" 表空n"); exit (1);/ 循 環(huán)檢測/ 對于每一 個(gè) i, 重 復(fù)檢測 一遍后 續(xù)元素/ 如果相等 ,刪除此 結(jié)

13、點(diǎn),后 續(xù)元素前移i=0;while ( i < L->length ) j = i + 1;tmp = L->elemi;while( j < L->length ) if( tmp = L->elemj) for( k = j+1; k < L->length; k+ ) L->elemk-1 = L->elemk;L->length-;/ 表最后元素位置 減 1 else j+;i+;int main(void)int i,j,e,lo,temp;SqList *L=(SqList*)malloc(sizeof(SqLis

14、t);InitList(L);/ 輸 入順序表printf(" 請輸順 序表的 長 度:n");scanf("%d",&L->length);printf(" 請輸 入順序表的各 個(gè)元素 :n");for(i=0;i<L->length;+i)scanf("%d",&L->elemi);printf(" 輸入的 順序表是 :n");for (i=0;i<L->length;+i)printf("%d ",L->elem

15、i);printf("n");printf(" 請輸 入 插入的位置以及 節(jié)點(diǎn):n");/ 插 入scanf("%d%d",&j,&e);ListInsert(L,j,e);printf(" 插入后的順序表 為:n");for (i=0;i<L->length;+i)printf("%d ",L->elemi);printf("n");printf(" 請輸 入要 刪除的位置: ");/ 刪除scanf("%d",&lo);ListDelete(L,lo,temp);for (i=0;i<L->length;+i) printf("%d ",L->elemi);查找刪除重復(fù) printf("n&q

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論