




已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1. 實(shí)驗(yàn)題目 線性表的應(yīng)用2. 實(shí)驗(yàn)內(nèi)容 有序表的查找與合并3. 實(shí)驗(yàn)?zāi)康恼莆站€性表的概念及原理,運(yùn)用線性表的原理完成實(shí)驗(yàn)題目中的內(nèi)容。4. 實(shí)驗(yàn)要求為了更好的掌握與理解課堂上老師所講的概念與原理,實(shí)驗(yàn)前要認(rèn)真預(yù)習(xí)所做的實(shí)驗(yàn)內(nèi)容及編寫(xiě)源程序代碼(寫(xiě)在紙上與盤(pán)中均可),以便在實(shí)驗(yàn)課中完成老師所布置的實(shí)驗(yàn)內(nèi)容。5.概要設(shè)計(jì)原理6.詳細(xì)程序清單及注釋說(shuō)明#include using namespace std;#include#include#include #include #include #include #include #include #include/#define OVERFLOW -2 #define TRUE 1#define FALSE 0 #define OK 1#define ERROR 0#define INFEASIBLE -1#define LIST_INIT_SIZE 100#define LISTINCREMENT 2 / 線性表存儲(chǔ)空間的分配增量 typedef int Status;typedef int ElemType; typedef struct int *elem; int length; int listsize;SqList;int InitList_sq(SqList &L ) /構(gòu)建順序表LL.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int);if(!L.elem) exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;return OK;bool ListEmpty(SqList &L) / 初始條件:順序線性表L已存在。操作結(jié)果:若L為空表,則返回TRUE,否則返回FALSE if(L.length=0) return TRUE; else return FALSE; int DestroyList_sq(SqList &L) / 初始條件:順序線性表L已存在。操作結(jié)果:銷(xiāo)毀順序線性表L if(ListEmpty(L) free(L.elem); L.elem=NULL; L.length=0; L.listsize=0; return OK; int ClearList(SqList &L) / 初始條件:順序線性表L已存在。操作結(jié)果:將L重置為空表 if(ListEmpty(L) L.length=0; return OK;int ListInsert_sq(SqList &L,int i,int &e) / 初始條件:順序線性表L已存在,1iListLength(L)+1 / 操作結(jié)果:在L中第i個(gè)位置之前插入新的數(shù)據(jù)元素e,L的長(zhǎng)度加1int *q,*p,*newbase;if(i(L.length+1) return ERROR; / i值不合法 if(L.length=L.listsize) / 當(dāng)前存儲(chǔ)空間已滿,增加分配 if(!(newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType) exit(OVERFLOW); / 存儲(chǔ)分配失敗 L.elem=newbase; / 新基址 L.listsize+=LISTINCREMENT; / 增加存儲(chǔ)容量 q=&(L.elemi-1); / q為插入位置for(p=&(L.elemL.length-1);p=q;-p)*(p+1)=*p;/ 插入位置及之后的元素右移 *q=e; / 插入e +L.length; /表長(zhǎng)增1 return OK;/int ListDelete_sq(SqList &L,int i) / 初始條件:順序線性表L已存在,1iListLength(L)/ int *q,*p; / 操作結(jié)果:刪除L的第i個(gè)數(shù)據(jù)元素,并用e返回其值,L的長(zhǎng)度減1 / int e;/if(i(L.length) return ERROR; /i值不合法/q=&L.elemi-1; /q為刪除元素位置/e=*q; /有e存被刪元素 /cout刪除的元素是:;/couteendl;/p=L.elem+L.length-1; /for(+q;q=p;+q) / *(q-1)=*q;/刪除之后元素左移/-L.length;/表長(zhǎng)減1/return OK;/int ListLength_sq(SqList L) / 初始條件:順序線性表L已存在。操作結(jié)果:返回L中數(shù)據(jù)元素個(gè)數(shù) return L.length; int GetElem_sq(SqList L,int i) int e ; / 初始條件:順序線性表L已存在,1iListLength(L) / 操作結(jié)果:用e返回L中第i個(gè)數(shù)據(jù)元素的值 if(iL.length) exit(ERROR); e=*(L.elem+i-1); cout查找的元素為:eendl; return OK; int Listbijiao(SqList L) int *p,*p_last,*q; p=L.elem; L.length=ListLength_sq(L); p_last=L.elem+L.length-1; for(p;p=p_last;p+) coutslj; for(q=p+1;q=p_last;q+) if(*p=*q) return OK; else ; void MergeList_sq(SqList &La,SqList &Lb,SqList &Lc) /合并兩個(gè)線性列表int *pa,*pb,*pc,*pa_last,*pb_last,*pc_last; pa=La.elem; pb=Lb.elem; pc=Lc.elem; pa_last=La.elem+La.length-1; pb_last=Lb.elem+Lb.length-1;while(pa=pa_last&pb=pb_last)if(*pa=*pb) *pc+=*pa+;else *pc+=*pb+;+Lc.length;while(pa=pa_last) *pc+=*pa+;+Lc.length;while(pb=pb_last) *pc+=*pb+;+Lc.length; pc_last=Lc.elem+Lc.length-1;cout鏈表長(zhǎng):Lc.lengthendl;cout合并后的鏈表為:endl;for(pc=Lc.elem;pc=pc_last;pc+)cout *pc;coutendl;void main() SqList la,lb,lc; int e,k,j; int i; cout初始化la:; i=InitList_sq(la);/ coutla.elem=;/ coutla.elem; / cout ; if(la.length=0)cout初始化成功!; else cout初始化失敗!endl; coutla的初始長(zhǎng)度為: la.lengthendl; coutj; coutendl; cout按非遞增輸入數(shù)字:; for(k=1;k=j;k+) coute; i=ListInsert_sq(la,1,e); coutla:; Listbijiao(la);for(k=0;k=(la.length-1);k+) coutla.elemk;cout ;coutendl;/cout在第i(ie;/cout ;/i=ListInsert_sq(la,i,e);/coutla變?yōu)椋?/for(k=0;k=(la.length-1);k+)/ /coutla.elemk;/cout ;/coutendl;/*i= ListDelete_sq(la,2);cout刪除第二個(gè)元素后la變?yōu)椋?for(k=0;(k=la.length-1);k+) coutla.elemk;cout ;coutendl;*/cout初始化lb:;i=InitList_sq(lb);/coutlb.elem=;/coutlb.elem;/cout ;/coutlb.length= ;/coutlb.length;/coutendl;/cout請(qǐng)輸入j(jj;/ coutendl; if(lb.length=0)cout初始化成功!; else cout初始化失敗!endl; coutlb的初始長(zhǎng)度為: lb.lengthendl; coutj; coutendl按非遞增輸入數(shù)字:; for(k=1;k=j;k+) coute; i=ListInsert_sq(lb,1,e); coutlb:;for(k=0;k=(lb.length-1);k+) coutlb.elemk;cout ;coutendl;la.length=ListLength_sq(la);lb.length=ListLength_sq(lb);coutla.length= la.length lb.length=lb.length;coutendl;couti;GetElem_sq(la,i);i=InitLi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 手里有就業(yè)協(xié)議書(shū)
- 替房主解壓協(xié)議書(shū)
- 電信橙分期協(xié)議書(shū)
- 合作擔(dān)保金協(xié)議書(shū)
- 離婚前打架協(xié)議書(shū)
- 安裝落水槽協(xié)議書(shū)
- 裝備展意向協(xié)議書(shū)
- 汽車(chē)代付款協(xié)議書(shū)
- 酸度調(diào)節(jié)劑買(mǎi)賣(mài)協(xié)議書(shū)
- 招募合作人協(xié)議書(shū)
- 肩袖損傷的治療與護(hù)理
- 【MOOC】創(chuàng)業(yè)基礎(chǔ)-浙江科技學(xué)院 中國(guó)大學(xué)慕課MOOC答案
- 物理-2025年中考終極押題猜想(廣州專(zhuān)用)(原卷版)
- 江蘇省蘇州市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)統(tǒng)編版期末考試(下學(xué)期)試卷及答案
- 二次元行業(yè)的發(fā)展環(huán)境分析
- 2024年中國(guó)玻璃鋼纏繞管道市場(chǎng)調(diào)查研究報(bào)告
- 工廠轉(zhuǎn)讓協(xié)議書(shū)的
- 2024年移動(dòng)網(wǎng)格經(jīng)理(認(rèn)證考試)備考試題庫(kù)大全-上單選、多選題匯
- 胸外科護(hù)理常規(guī)(全本) 胸外科疾病護(hù)理常規(guī)
- 醫(yī)學(xué)課件內(nèi)科胸腔鏡術(shù)
- 天津市南開(kāi)區(qū)2023-2024學(xué)年四年級(jí)下學(xué)期6月期末數(shù)學(xué)試題
評(píng)論
0/150
提交評(píng)論