版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章線性表作業(yè)評(píng)講1可編輯課件PPT2.1試描述頭指針、頭結(jié)點(diǎn)、開始結(jié)點(diǎn)的區(qū)別、并說明頭指針和頭結(jié)點(diǎn)的作用。
2.2何時(shí)選用順序表、何時(shí)選用鏈表作為線性表的存儲(chǔ)結(jié)構(gòu)為宜?2.3在順序表中插入和刪除一個(gè)結(jié)點(diǎn)需平均移動(dòng)多少個(gè)結(jié)點(diǎn)?具體的移動(dòng)次數(shù)取決于哪兩個(gè)因素?2.4為什么在單循環(huán)鏈表中設(shè)置尾指針比設(shè)置頭指針更好?2.5在單鏈表、雙鏈表和單循環(huán)鏈表中,若僅知道指針p指向某結(jié)點(diǎn),不知道頭指針,能否將結(jié)點(diǎn)*p從相應(yīng)的鏈表中刪去?若可以,其時(shí)間復(fù)雜度各為多少?作業(yè):2.5、2.7、2.9、2.11做在作業(yè)本上,交,其余堂下練習(xí)2可編輯課件PPT2.6設(shè)有一個(gè)雙鏈表,每個(gè)結(jié)點(diǎn)中除有prior、data和next三個(gè)域外,還有一個(gè)訪問頻度域freq,在鏈表被起用之前,其值均初始化為零。每當(dāng)在鏈表進(jìn)行一次LocateNode(L,s)運(yùn)算時(shí),令元素值為x的結(jié)點(diǎn)中freq域的值加1,并調(diào)整表中結(jié)點(diǎn)的次序,使其按訪問頻度的遞減序排列,以便使頻繁訪問的結(jié)點(diǎn)總是靠近表頭。試寫一符合上述要求的LocateNode運(yùn)算的算法。2.7寫一算法在單鏈表上實(shí)現(xiàn)線性表的ListLength(L)運(yùn)算。3可編輯課件PPT2.8已知由單鏈表表示的線性表中,含有三類字符的數(shù)據(jù)元素(如:字母字符、數(shù)字字符和其它字符),試編寫算法構(gòu)造三個(gè)以循環(huán)鏈表表示的線性表,使每個(gè)表中只含同一類的字符,且利用原表中的結(jié)點(diǎn)空間作為這三個(gè)表的結(jié)點(diǎn)空間,頭結(jié)點(diǎn)可另辟空間。2.9假設(shè)在長(zhǎng)度大于1的單循環(huán)鏈表中,既無頭結(jié)點(diǎn)也無頭指針。s為指向鏈表中某個(gè)結(jié)點(diǎn)的指針,試編寫算法刪除結(jié)點(diǎn)*s的直接前趨結(jié)點(diǎn)。2.10設(shè)順序表L是一個(gè)遞增有序表,試寫一算法,將x插入L中,并使L仍是一個(gè)有序表。4可編輯課件PPT2.11寫出以下鏈表操作的算法1)創(chuàng)建一個(gè)空的雙向循環(huán)鏈表statusCreateList_Dul(DuLinkList&L);2)取得雙向循環(huán)鏈表中第i個(gè)數(shù)據(jù)元素的位置指針statusGetElemP_Dul(DuLinkListL,inti);3)將單鏈表置逆statusReverseList_L(LinkList&L);5可編輯課件PPT2.1試描述頭指針、頭結(jié)點(diǎn)、開始結(jié)點(diǎn)的區(qū)別、并說明頭指針和頭結(jié)點(diǎn)的作用。開始結(jié)點(diǎn)是指鏈表中的第一個(gè)結(jié)點(diǎn),沒有直接前趨的那個(gè)結(jié)點(diǎn)。鏈表的頭指針是一指向鏈表開始結(jié)點(diǎn)的指針(沒有頭結(jié)點(diǎn)時(shí)),單鏈表由頭指針唯一確定,因此單鏈表可以用頭指針的名字來命名。頭結(jié)點(diǎn)在鏈表的開始結(jié)點(diǎn)之前附加的一個(gè)結(jié)點(diǎn)。有了頭結(jié)點(diǎn)之后,頭指針指向頭結(jié)點(diǎn),不論鏈表否為空,頭指針總是非空。而且頭指針的設(shè)置使得對(duì)鏈表的第一個(gè)位置上的操作與在表其他位置上的操作一致(都是在某一結(jié)點(diǎn)之后)。6可編輯課件PPT2.2何時(shí)選用順序表、何時(shí)選用鏈表作為線性表的存儲(chǔ)結(jié)構(gòu)為宜?
1.基于空間的考慮。當(dāng)要求存儲(chǔ)的線性表長(zhǎng)度變化不大,易于事先確定其大小時(shí),為了節(jié)約存儲(chǔ)空間,宜采用順序表;反之,當(dāng)線性表長(zhǎng)度變化大,難以估計(jì)其存儲(chǔ)規(guī)模時(shí),采用動(dòng)態(tài)鏈表作為存儲(chǔ)結(jié)構(gòu)為好。2.基于時(shí)間的考慮。若線性表的操作主要是進(jìn)行查找,很少做插入和刪除操作時(shí),采用順序表做存儲(chǔ)結(jié)構(gòu)為宜;反之,
若需要對(duì)線性表進(jìn)行頻繁地插入或刪除等的操作時(shí),宜采用鏈表做存儲(chǔ)結(jié)構(gòu)。并且,若鏈表的插入和刪除主要發(fā)生在表的首尾兩端,則采用尾指針表示的單循環(huán)鏈表為宜。
7可編輯課件PPT2.3在順序表中插入和刪除一個(gè)結(jié)點(diǎn)需平均移動(dòng)多少個(gè)結(jié)點(diǎn)?具體的移動(dòng)次數(shù)取決于哪兩個(gè)因素?在等概率情況下,順序表中插入一個(gè)結(jié)點(diǎn)需平均移動(dòng)n/2個(gè)結(jié)點(diǎn)。刪除一個(gè)結(jié)點(diǎn)需平均移動(dòng)(n-1)/2個(gè)結(jié)點(diǎn)。具體的移動(dòng)次數(shù)取決于順序表的長(zhǎng)度n以及需插入或刪除的位置i。i越接近n則所需移動(dòng)的結(jié)點(diǎn)數(shù)越少。
8可編輯課件PPT2.4為什么在單循環(huán)鏈表中設(shè)置尾指針比設(shè)置頭指針更好?
尾指針是指向終端結(jié)點(diǎn)的指針,用它來表示單循環(huán)鏈表可以使得查找鏈表的開始結(jié)點(diǎn)和終端結(jié)點(diǎn)都很方便,設(shè)一帶頭結(jié)點(diǎn)的單循環(huán)鏈表,其尾指針為rear,則開始結(jié)點(diǎn)和終端結(jié)點(diǎn)的位置分別是rear->next->next和rear,查找時(shí)間都是O(1)。若用頭指針來表示該鏈表,則查找終端結(jié)點(diǎn)的時(shí)間為O(n)。
9可編輯課件PPT2.5在單鏈表、雙鏈表和單循環(huán)鏈表中,若僅知道指針p指向某結(jié)點(diǎn),不知道頭指針,能否將結(jié)點(diǎn)*p從相應(yīng)的鏈表中刪去?若可以,其時(shí)間復(fù)雜度各為多少?
1.單鏈表。當(dāng)我們知道指針p指向某結(jié)點(diǎn)時(shí),能夠根據(jù)該指針找到其直接后繼,但是由于不知道其頭指針,所以無法訪問到p指針指向的結(jié)點(diǎn)的直接前趨。因此無法刪去該結(jié)點(diǎn)。2.雙鏈表。由于這樣的鏈表提供雙向鏈接,因此根據(jù)已知結(jié)點(diǎn)可以查找到其直接前趨和直接后繼,從而可以刪除該結(jié)點(diǎn)。其時(shí)間復(fù)雜度為O(1)。3.單循環(huán)鏈表。根據(jù)已知結(jié)點(diǎn)位置,我們可以直接得到其后相鄰的結(jié)點(diǎn)位置(直接后繼),又因?yàn)槭茄h(huán)鏈表,所以我們可以通過查找,得到p結(jié)點(diǎn)的直接前趨。因此可以刪去p所指結(jié)點(diǎn)。其時(shí)間復(fù)雜度應(yīng)為O(n)。
10可編輯課件PPT2.6設(shè)有一個(gè)雙鏈表,每個(gè)結(jié)點(diǎn)中除有prior、data和next三個(gè)域外,還有一個(gè)訪問頻度域freq,在鏈表被起用之前,其值均初始化為零。每當(dāng)在鏈表進(jìn)行一次LocateNode(L,s)運(yùn)算時(shí),令元素值為x的結(jié)點(diǎn)中freq域的值加1,并調(diào)整表中結(jié)點(diǎn)的次序,使其按訪問頻度的遞減序排列,以便使頻繁訪問的結(jié)點(diǎn)總是靠近表頭。試寫一符合上述要求的LocateNode運(yùn)算的算法。
Statuslocatenode(dullinklist&L,elemtypex){dulnode*p,*q;p=q=L->next;while(p){if(p->data!=x)p=p->next;else{p->freq++;break;}}while(q){if(q->freq>p->freq)q=q->next;else{p->prior->next=p->next;p->next->prior=p->prior;p->next=q;p->prior=q->prior;q->prior->next=p;q->prior=p}}returnok;}11可編輯課件PPT2.7寫一算法在單鏈表上實(shí)現(xiàn)線性表的ListLength(L)運(yùn)算。
求單鏈表長(zhǎng)只能用遍歷的方法了,從頭數(shù)到尾。算法如下:intListLength(LinkListL)
{
intlen=0;
ListNode*p;
p=L;//設(shè)該表有頭結(jié)點(diǎn)
while(p->next)
{
p=p->next;
len++;
}
returnlen;
}
12可編輯課件PPT2.8已知由單鏈表表示的線性表中,含有三類字符的數(shù)據(jù)元素(如:字母字符、數(shù)字字符和其它字符),試編寫算法構(gòu)造三個(gè)以循環(huán)鏈表表示的線性表,使每個(gè)表中只含同一類的字符,且利用原表中的結(jié)點(diǎn)空間作為這三個(gè)表的結(jié)點(diǎn)空間,頭結(jié)點(diǎn)可另辟空間。13可編輯課件PPT2.9假設(shè)在長(zhǎng)度大于1的單循環(huán)鏈表中,既無頭結(jié)點(diǎn)也無頭指針。s為指向鏈表中某個(gè)結(jié)點(diǎn)的指針,試編寫算法刪除結(jié)點(diǎn)*s的直接前趨結(jié)點(diǎn)。
statusDeleteNode(ListNode*s)
{
//刪除單循環(huán)鏈表中指定結(jié)點(diǎn)的直接前趨結(jié)點(diǎn)
ListNode*p,*q;
p=s;
while(p->next->next!=s)
{
q=p;
p=p->next;
}
q->next=s;//刪除結(jié)點(diǎn)
free(p);//釋放空間
returnOK;}14可編輯課件PPT2.10設(shè)順序表L是一個(gè)遞增有序表,試寫一算法,將x插入L中,并使L仍是一個(gè)有序表。
voidInsertIncreaseList(Seqlist*L,Datatypex)
{
inti;
for(i=0;i<L->length&&L->data[i]<x;i++);//查找并比較ListInsert_sq(L,i,x);//調(diào)用順序表插入函數(shù)p24
}15可編輯課件PPT2.11寫出以下鏈表操作的算法
1)創(chuàng)建一個(gè)空的雙向循環(huán)鏈表statusCreateList_Dul(DuLinkList&L){L=(dulnode*)malloc(sizeof(dulnode));if(!L)exit(OVERFLOW);L->next=L;L->prior=L;return(OK);//見圖2.14(b)P36}16可編輯課件PPT2.11寫出以下鏈表操作的算法
2)取得雙向循環(huán)鏈表中第i個(gè)數(shù)據(jù)元素的位置指針statusGetElemP_Dul(DuLinkListL,inti){elemtype*p;inta=1;if(i<0)returnERROR;else{p=L;p=p->next;while(a<i||p!=NULL){p=p->next;a++;}}If(a==i)return(p);elsereturn(ERROR);}17可編輯課件PPT2.11寫出以下鏈表操作的算法
3)將單鏈表置逆statusReverseList_L(LinkList&L){Lnode*p1,*p2,*p3;If(L->next==NULL)returnOK;else{p1=L;p1->next=N
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年消防設(shè)施檢測(cè)與維保服務(wù)合同5篇
- 2025年度安置房質(zhì)量保證合同書3篇
- 2025年水泥制品環(huán)保技術(shù)轉(zhuǎn)移合同3篇
- 2025年度高空墜落防護(hù)HSE施工安全協(xié)議3篇
- 二零二五年房產(chǎn)銷售代理與廣告宣傳協(xié)議3篇
- 二零二五年鮮活水產(chǎn)品運(yùn)輸與質(zhì)量監(jiān)管協(xié)議3篇
- 2025年度免租金停車場(chǎng)租賃合同模板
- 2025版棋牌室三方合作協(xié)議-創(chuàng)新管理與行業(yè)規(guī)范4篇
- 2025年污水處理站污水處理設(shè)施設(shè)備租賃與維修合同3篇
- 2025年度留學(xué)簽證擔(dān)保與資金證明服務(wù)合同3篇
- 公司組織架構(gòu)圖(可編輯模版)
- 1汽輪機(jī)跳閘事故演練
- 陜西省銅川市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 禮品(禮金)上交登記臺(tái)賬
- 普通高中英語課程標(biāo)準(zhǔn)詞匯表
- 北師大版七年級(jí)數(shù)學(xué)上冊(cè)教案(全冊(cè)完整版)教學(xué)設(shè)計(jì)含教學(xué)反思
- 2023高中物理步步高大一輪 第五章 第1講 萬有引力定律及應(yīng)用
- 青少年軟件編程(Scratch)練習(xí)題及答案
- 浙江省公務(wù)員考試面試真題答案及解析精選
- 系統(tǒng)性紅斑狼瘡-第九版內(nèi)科學(xué)
- 全統(tǒng)定額工程量計(jì)算規(guī)則1994
評(píng)論
0/150
提交評(píng)論