版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2.2線性表的順序表示和實(shí)現(xiàn)用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)。例:(34,23,67,43)342367434存儲(chǔ)要點(diǎn)用一段地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)線性表中的數(shù)據(jù)元素2.2線性表的順序表示和實(shí)現(xiàn)順序表——線性表的順序存儲(chǔ)結(jié)構(gòu)例:(34,23,67,43)34236743存儲(chǔ)空間的起始位置4用什么屬性來(lái)描述順序表?順序表的容量(最大長(zhǎng)度)順序表的當(dāng)前長(zhǎng)度2.2線性表的順序表示和實(shí)現(xiàn)順序表——線性表的順序存儲(chǔ)結(jié)構(gòu)例:(34,23,67,43)342367434如何實(shí)現(xiàn)順序表的內(nèi)存分配?順序表一維數(shù)組邏輯相鄰位置相鄰如何求得任意元素的存儲(chǔ)地址?0…i-2i-1…n-1Listsize-1a1…ai-1ai…an空閑長(zhǎng)度2.2線性表的順序表示和實(shí)現(xiàn)順序表一般情況下,(a1,a2,…,ai-1,ai,…,an)的順序存儲(chǔ):cLoc(ai)Loc(a1)0…i-2i-1…n-1Listsize-1a1…ai-1ai…an空閑長(zhǎng)度Loc(ai)=Loc(a1)+(i-1)×l隨機(jī)存?。涸贠(1)時(shí)間內(nèi)存取數(shù)據(jù)元素2.2線性表的順序表示和實(shí)現(xiàn)順序表一般情況下,(a1,a2,…,ai-1,ai,…,an)的順序存儲(chǔ):cLoc(ai)Loc(a1)C語(yǔ)言中用一維數(shù)組來(lái)表示順序表:2.2線性表的順序表示和實(shí)現(xiàn)#defineLISTINCREMENT10//存儲(chǔ)空間的分配增量typedefstruct{
ElemType*elem;
//存儲(chǔ)空間基址
intlength;
//線性表當(dāng)前的大小intlistsize;//當(dāng)前分配的存儲(chǔ)容量}SqList;#defineLIST_INIT_SIZE100
//線性表初始分配量線性表的初始化:2.2線性表的順序表示和實(shí)現(xiàn)StatusInitList_Sq(SqList&L){L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!L.elem)exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;returnOK;}
882.2線性表的順序表示和實(shí)現(xiàn)數(shù)組下標(biāo)結(jié)點(diǎn)內(nèi)容線性表中位序0a111a222a33∶∶∶i-1aii∶∶∶n-1ann899順序表的特點(diǎn)關(guān)系線性化結(jié)點(diǎn)順序存91010順序表的操作實(shí)現(xiàn)插入刪除查找線性表的合并101111插入運(yùn)算定義:在第i(1in)個(gè)元素前插入一個(gè)新的數(shù)據(jù)元素e,使長(zhǎng)度為n的線性表(a1
,a2
,……,ai-1
,ai
,……,an)變成長(zhǎng)度為n+1的線性表(a1
,a2
,……,ai-1
,e,ai
,……,an)111212插入前:(a1,…,ai-1,ai,…,an)插入后:(a1,…,ai-1,e
,ai,…,an)順序表的實(shí)現(xiàn)——插入ai-1和ai之間的邏輯關(guān)系發(fā)生了變化順序存儲(chǔ)要求存儲(chǔ)位置反映邏輯關(guān)系存儲(chǔ)位置要反映這個(gè)變化12131333例:(35,12,24,42),在a2的位置上插入33。表滿:L.length>L.listsize合理的插入位置:1≤i≤L.length(i指的是元素的序號(hào))435122442a1a2a3a401234422412335什么時(shí)候不能插入?注意邊界條件5.順序表的實(shí)現(xiàn)——插入1314141.
如果元素的插入位置不合理,則插入位置非法;2.如果表滿了,則上溢;3.將最后一個(gè)元素至第i個(gè)元素分別向后移動(dòng)一個(gè)位置;4.將元素e填入位置i處;5.表長(zhǎng)加1;算法描述——偽代碼順序表的實(shí)現(xiàn)——插入141515StatusListInsert_Sq(SqList&L,inti,ElemTypee){If(i<1||i>L.length+1)returnERROR;If(L.length>=L.listsize){newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));If(!newbase)exit(OVERFLOW);L.elem=newbase;
L.listsize+=LISTINCREMENT;}//ifq=&(L.elem[i-1]);For(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;*q=e;++L.length;ReturnOK;}插入算法:在第i個(gè)位置前插入e1616最好情況(i=n+1):基本語(yǔ)句執(zhí)行0次,時(shí)間復(fù)雜度為O(1)。最壞情況(i=1):基本語(yǔ)句執(zhí)行n次,時(shí)間復(fù)雜度為O(n)。平均情況(1≤i≤n+1):時(shí)間復(fù)雜度為O(n)。時(shí)間性能分析:?+-+=11)=1(niiinp?+-++=11)=1(11niinn2n=O(n)161717運(yùn)算時(shí)間復(fù)雜度分析設(shè)Pi是在第i個(gè)元素之前插入一個(gè)元素的概率,則在長(zhǎng)度為n的線性表中插入一個(gè)元素時(shí),所需移動(dòng)的元素次數(shù)的期望值(平均次數(shù))為:171818結(jié)點(diǎn)刪除運(yùn)算定義:使長(zhǎng)度為n的線性表(a1
,a2
,……,ai-1
,ai
,……,an)變成長(zhǎng)度為n-1的線性表(a1
,a2
,……,ai-1
,ai+1
,……,an)算法分析:刪除第i(1≤i≤n)個(gè)元素,需將從第i+1個(gè)元素至第n個(gè)元素依次向前移動(dòng)一個(gè)位置。181919刪除前:(a1,…,ai-1,ai,ai+1,…,an)刪除后:(a1,…,ai-1,ai+1,…,an)
順序表的實(shí)現(xiàn)——?jiǎng)h除ai-1和ai+1之間的邏輯關(guān)系發(fā)生了變化順序存儲(chǔ)要求存儲(chǔ)位置反映邏輯關(guān)系存儲(chǔ)位置要反映這個(gè)變化192020例:(35,33,12,24,42),刪除i=2的數(shù)據(jù)元素。仿照順序表的插入操作,完成:1.分析邊界條件;2.分別給出偽代碼和C語(yǔ)言描述的算法;3.分析時(shí)間復(fù)雜度。535a1a2a3a401234422412334a5122442順序表的實(shí)現(xiàn)——?jiǎng)h除202121刪除運(yùn)算:刪除順序表中第i個(gè)位置元素eStatusListDelete_Sq(SqList&L,inti,ElemType&e){If(i<1||i>L.length)returnERROR;p=&(L.elem[i-1]);//刪除位置e=*p;q=L.elem+L.length-1;//表尾位置for(++p;p<=q;++p)*(p-1)=*p;--L.length;returnOK;}212222算法時(shí)間復(fù)雜度:設(shè)Qi是刪除第i個(gè)元素的概率,則在長(zhǎng)度為n的線性表中刪除一個(gè)元素所需移動(dòng)的元素次數(shù)的(期望值)平均次數(shù)為:222323順序表的實(shí)現(xiàn)——按值查找535a1a2a3a40123442241233a5例:在(35,33,12,24,42)
中查找值為12的元素,返回在表中的序號(hào)。iii注意序號(hào)和下標(biāo)之間的關(guān)系232424查找運(yùn)算:在順序表中查找第一個(gè)與e滿足compare()的元素位置intLocateElem_Sq(SqListL,ElemTypee,Status(*compare(ElemType,ElemType))){i=1;p=L.elem;//p為第一個(gè)元素位置while(i<=L.length&&!(*compare)(*p++,e))++i;if(i<=L.length)returni;elsereturn0;}242525查找算法分析:252n+1?=1=*niiip?=1=1niin=O(n)2626合并運(yùn)算:合并成一個(gè)有序表voidMergeList_Sq(SqListLa,SqListLb,SqList&Lc){pa=La.elem;pb=Lb.elem;Lc.listsize=Lc.length=La.length+Lb.length;pc=Lc.elem=(ElemType*)malloc(Lc.listsize*sizeof(ElemType));if(!Lc.elem)exit(OVERFLOW);pa_last=La.elem+La.length-1;pb_last=Lb.elem+Lb.length-1;262727合并運(yùn)算:while(pa<=pa_last&&pb<=pb_last){if(*pa<=*pb)*pc++=*pa++;else*pc++=*pb++;}while(pa<=pa_last)*pc++=*pa++;while(pb<=pb_last)*pc++=*pb++;}
272828順序存儲(chǔ)結(jié)構(gòu)的特點(diǎn)
順序表的優(yōu)點(diǎn):⑴無(wú)需為表示表中元素之間的邏輯關(guān)系而增加額外的存儲(chǔ)空間;⑵隨機(jī)存取:可以快速地存取表中任一位置的元素。
順序表的缺點(diǎn):⑴插入和刪除操作需要移動(dòng)大量元素;⑵表的容量難以確定,表的容量難以擴(kuò)充;⑶造成存
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美麗鄉(xiāng)村配套污水處理設(shè)施工程環(huán)境影響評(píng)估
- 內(nèi)蒙古電子信息職業(yè)技術(shù)學(xué)院《工程測(cè)量實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 內(nèi)蒙古大學(xué)《設(shè)計(jì)造型基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 內(nèi)蒙古大學(xué)《電機(jī)原理與傳動(dòng)技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 內(nèi)分泌科的預(yù)防保健
- 內(nèi)蒙古北方職業(yè)技術(shù)學(xué)院《水工建筑物課程設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 截肢術(shù)后的康復(fù)
- 2024年房產(chǎn)中介網(wǎng)絡(luò)推廣服務(wù)合作協(xié)議范文2篇
- 2024年度物聯(lián)網(wǎng)技術(shù)個(gè)人技術(shù)服務(wù)合同范本3篇
- 2024屋頂綠化設(shè)計(jì)合同2篇
- 小兒全麻患者術(shù)后護(hù)理
- 黑龍江省哈爾濱市2023-2024學(xué)年八年級(jí)上學(xué)期語(yǔ)文期末模擬考試試卷(含答案)
- 理論力學(xué)(浙江大學(xué))知到智慧樹(shù)章節(jié)答案
- 云南省普通高中2023-2024學(xué)年高一上學(xué)期1月期末學(xué)業(yè)水平考試技術(shù)試卷
- 2024年百科知識(shí)競(jìng)賽題庫(kù)及答案(共三套)
- JGJ-T490-2021鋼框架內(nèi)填墻板結(jié)構(gòu)技術(shù)標(biāo)準(zhǔn)
- 2024年移動(dòng)解決方案經(jīng)理認(rèn)證考試題庫(kù)大全-中(多選題)
- 破碎錘項(xiàng)目營(yíng)銷計(jì)劃書(shū)
- DB11T 715-2018 公共汽電車場(chǎng)站功能設(shè)計(jì)要求
- 挖掘機(jī)技術(shù)培訓(xùn)
- 2024秋期國(guó)家開(kāi)放大學(xué)??啤豆芾韺W(xué)基礎(chǔ)》一平臺(tái)在線形考(形考任務(wù)一至四)試題及答案
評(píng)論
0/150
提交評(píng)論