freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第2章線性表答案-文庫吧

2025-08-02 14:36 本頁面


【正文】 回“ false“。 pre指向當(dāng)前結(jié)點, p指向 pre的后繼。 12. q=pnext。 pnext=qnext。 free(q)。 13. 設(shè)單鏈表的頭結(jié)點的 頭指針為 head,且 pre=head; while(prenext!=p) pre=prenext。 snext=p。 prenext=s。 ,工作指針 p初始化為 p=Hnext。 (1) while(p!=null amp。amp。 pdata!=X) p=pnext。 if(p= =null) return(null)。∥查找失敗 else return(p)。∥查找成功 (2) while(p!=null amp。amp。 pdataX ) p=pnext。 if(p==null || pdataX) return(null)。∥查找失敗 else return(p)。 (3) while(p!=null amp。amp。 pdataX) p=pnext。 if(p==null || pdataX) return(null)。 ∥查找失敗 else return(p)。 ∥查找成功 pa和 pb鏈表中的值相同的結(jié)點保留在 pa鏈表中( pa中與 pb中不同結(jié)點刪除), pa是結(jié)果鏈表的頭指針。鏈表中結(jié)點值與從前逆序。 S1記結(jié)果鏈表中結(jié)點個數(shù)(即 pa與 pb中相等的元素個數(shù))。 S2 記原 pa鏈表中刪除的結(jié)點個數(shù)。 16.設(shè) q:=p^.llink。 則 q^.rlink:=p^.rlink。 p^.rlink^.llink:=q。 p^.llink:=q^.llink。 q^.llink^.rlink:=p。 p^.rlink:=q。 q^.llink:=p 17.(1)前兩個語句改為: ^.rlink p^.rlink。 p^.rlink^.llink p^.llink。 (2)后三個語句序列應(yīng)改為: q^.rlink p^.rlink?!我韵氯涞捻樞虿荒茏? p^.rlink^.llink q。 p^.rlink q。 18. mp是一個過程,其內(nèi)嵌套有過程 subp。 subp(s,q)的作用是構(gòu)造從 s到 q的循環(huán)鏈表。 subp(pa,pb)調(diào)用結(jié)果是將 pa 到 pb的前驅(qū)構(gòu)造為循環(huán)鏈表。 subp(pb,pa)調(diào)用結(jié)果是將 pb到 pa的前驅(qū)(指在 L鏈表中,并非剛構(gòu)造的 pa循環(huán)鏈表中)構(gòu)造為循環(huán)鏈表。 總之,兩次調(diào)用將 L 循環(huán)鏈表分解為兩個。第一個循環(huán)鏈表包含從 pa 到 pb 的前驅(qū) ,L中除剛構(gòu)造的 pa到 pb前驅(qū)外的結(jié)點形成第二個循環(huán)鏈表。 19.在指針 p所指結(jié)點前插入結(jié)點 s的語句如下: spre=ppre。 snext=p。 pprenext=s。 ppre=s。 20. (A) f1NIL并且 f2NIL (B) f1↑ .data f2↑ .data (C) f2↑ .dataf1↑ .data (D) f3↑ .dataf1↑ .data (E) f1 f1↑ .link 或 f2=f2↑ .link。 21. 1)本算法功能是將雙向循環(huán)鏈表結(jié)點的數(shù)據(jù)域按值自小到大排序,成為非遞減(可能包括數(shù)據(jù)域值相等的結(jié)點)有序雙向循環(huán)鏈表。 2) (1)rprior=qprior?!螌?q結(jié)點摘下,以便插入到適當(dāng)位置。 (2)pnextprior=q。∥( 2)( 3)將 q結(jié)點插入 (3)pnext=q。 (4)r=rnext?;?r=qnext?!魏笠浦羔?,再將新結(jié)點插入 到適當(dāng)位置。 五、 算法設(shè)計題 1. [題目分析 ]因為兩鏈表已按元素值遞增次序排列,將其合并時,均從第一個結(jié)點起進(jìn)行比較,將小的鏈入鏈表中,同時后移鏈表工作指針。該問題要求結(jié)果鏈表按元素值遞減次序排列。故在合并的同時,將鏈表結(jié)點逆置。 LinkedList Union(LinkedList la,lb) ∥ la,lb分別是帶頭結(jié)點的兩個單鏈表的頭指針,鏈表中的元素值按遞增序排列,本算法將兩鏈表合并成一個按元素值遞減次序排列的單鏈表。 { pa=lanext。 pb=lbnext。∥ pa, pb分別是 鏈表 la和 lb 的工作指針 lanext=null。 ∥ la 作結(jié)果鏈表的頭指針,先將結(jié)果鏈表初始化為空。 while(pa!=null amp。amp。 pb!=null) ∥當(dāng)兩鏈表均不為空時作 if(padata=pbdata) { r=panext。 ∥將 pa 的后繼結(jié)點暫存于 r。 panext=lanext。 ∥將 pa結(jié)點鏈于結(jié)果表中,同時逆置。 lanext=pa。 pa=r。 ∥恢復(fù) pa為當(dāng)前待比較結(jié)點。 } else {r=pbnext?!? 將 pb 的后繼結(jié)點暫存于 r。 pbnext=lanext。 ∥將 pb結(jié)點鏈于結(jié)果表中,同時逆置。 lanext=pb。 pb=r。 ∥恢復(fù) pb為當(dāng)前待比較結(jié)點。 } while(pa!=null) ∥將 la表的剩余部分鏈入結(jié)果表,并逆置。 {r=panext。 panext=lanext。 lanext=pa。 pa=r。 } while(pb!=null) {r=pbnext。 pbnext=lanext。 lanext=pb。 pb=r。 } }∥算法 Union結(jié)束。 [算法討論]上面兩鏈表均不為空的表達(dá)式也可簡寫為 while(paamp。amp。pb),兩遞增有序表合并成遞減有序表時,上述算法是邊合并邊逆置。也可先合并完,再作鏈表逆置。后者不如前者優(yōu)化。算法中最后兩個 while語句,不可能執(zhí)行兩個,只能二者取一,即哪個表尚未到尾,就將其逆置到結(jié) 果表中,即將剩余結(jié)點依次前插入到結(jié)果表的頭結(jié)點后面。 與本題類似的其它題解答如下: (1)[問題分析]與上題類似,不同之處在于:一是鏈表無頭結(jié)點,為處理方便,給加上頭結(jié)點,處理結(jié)束再刪除之;二是數(shù)據(jù)相同的結(jié)點,不合并到結(jié)果鏈表中;三是 hb 鏈表不能被破壞,即將 hb的結(jié)點合并到結(jié)果鏈表時,要生成新結(jié)點。 LinkedList Union(LinkedList ha, hb) ∥ ha 和 hb 是兩個無頭結(jié)點的數(shù)據(jù)域值遞增有序的單鏈表,本算法將 hb 中并不出現(xiàn)在 ha中的數(shù)據(jù)合并到 ha中,合并中不能破壞 hb鏈表。 { LinkedList la。 la=(LinkedList)malloc(sizeof(LNode))。 lanext=ha?!紊暾堫^結(jié)點,以便操作。 pa=ha。 ∥ pa是 ha鏈表的工作指針 pb=hb。 ∥ pb是 hb鏈表的工作指針 pre=la。 ∥ pre指向當(dāng)前待合并結(jié)點的前驅(qū)。 while(paamp。amp。pb) if(padatapbdata)∥處理 ha中數(shù)據(jù) {prenext=pa。pre=pa。pa=panext。} else if(padatapbdata)∥處理 hb中數(shù)據(jù)。 {r=(LinkedList)malloc(sizeof(LNode))?!紊暾埧臻g rdata=pbdata。 prenext=r。 pre=r。∥將新結(jié)點鏈入結(jié)果鏈表。 pb=pbnext?!?hb鏈表中工作指針后移。 } else∥處理 padata=pbdata。 {prenext=pa。 pre=pa。 pa=panext?!蝺山Y(jié)點數(shù)據(jù)相等時,只將 ha的數(shù)據(jù)鏈入。 pb=pbnext?!尾灰?hb的相等數(shù)據(jù) } if(pa!=null)prenext=pa?!螌涉湵碇惺S嗖糠宙溔虢Y(jié)果鏈表。 else prenext=pb。 free(la)?!吾尫蓬^結(jié)點 .ha,hb指針未被破壞。 }∥算法 nion結(jié)束。 (2)本題與上面兩題類似,要求結(jié)果指針為 lc,其核心語句段如下: pa=lanext。pb=hbnext。 lc=(LinkedList )malloc(sizeof(LNode))。 pc=lc?!?pc是結(jié)果鏈表中當(dāng)前結(jié)點的前驅(qū) while(paamp。amp。pb) if(padatapbdata) {pcnext=pa。pc=pa。pa=panext。} else {pcnext=pb。pc=pb。pb=pbnext。} if(pa)pcnext=pa。 else pcnext=pb。 free(la)。free(lb)。∥釋放原來兩鏈表的頭結(jié)點。 算法時間復(fù)雜度為 O( m+n),其中 m和 n分別為鏈表 la和 lb的長度。 2. [題目分析 ]本組題有 6個,本質(zhì)上都是鏈表的合并操作,合并中有各種條件。與前組題不同的是,敘述上是用線性表代表集合,而操作則是求集合的并、交、差( A∪ B, A∩ B, AB)等。 本題與上面 1.( 2)基本相同,不同之處 1.( 2)中鏈表是“非遞減有序”,(可能包含相等元素),本題是元素“遞增有序”(不準(zhǔn)有相同元素)。因此兩表中合并 時,如有元素值相等元素,則應(yīng)刪掉一個。 LinkedList Union(LinkedList ha,hb) ∥線性表 A和 B代表兩個集合,以鏈?zhǔn)酱鎯Y(jié)構(gòu)存儲,元素遞增有序。 ha和 hb分別是其鏈表的頭指針。本算法求 A 和 B 的并集 A∪ B,仍用線性表表示,結(jié)果鏈表元素也是遞增有序。 { pa=hanext。pb=hbnext?!卧O(shè)工作指針 pa 和 pb。 pc=ha?!?pc為結(jié)果鏈表當(dāng)前結(jié)點的前驅(qū)指針。 while(paamp。amp。pb) if(padatapbdata) {pcnext=pa。pc=pa。pa=panext。} else if(padatapbdata) {pcnext=pb。pc=pb。pb=pbnext。} else∥處理 padata=pbdata. {pcnext=pa。pc=pa。pa=panext。 u=pb。pb=pbnext。free(u)。} if(pa) pcnext=pa?!? 若 ha表未空,則鏈入結(jié)果表。 else pcnext=pb。∥若 hb表未空,則鏈入結(jié)果表。 free(hb)。 ∥釋放 hb頭結(jié)點 return(ha)。 }∥算法 Union結(jié)束。 與本題類似的其它幾個題解答如下: (1) 解答完全同 上 2。 (2) 本題是求交集,即只有同時出現(xiàn)在兩集合中的元素才出現(xiàn)在結(jié)果表中。其核心語句段如下: pa=lanext。pb=lbnext?!卧O(shè)工作指針 pa和 pb; pc=la?!谓Y(jié)果表中當(dāng)前合并結(jié)點的前驅(qū)的指針。 while(paamp。amp。pb) if(padata==pbdata)∥交集并入結(jié)果表中。 { pcnext=pa。pc=pa。pa=panext。 u=pb。pb=pbnext。free(u)。} else if(padatapbdata) {u=pa。pa=panext。free(u)。} else {u=pb。 pb=pbnext。 free(u)。} while(pa){ u=pa。 pa=panext。 free(u)。}∥ 釋放結(jié)點空間 while(pb) {u=pb。 pb=pbnext。 free(u)。}∥釋放結(jié)點空間 pcnext=null?!沃面湵砦矘?biāo)記。 free(lb)。 ∥注: 本算法中也可對 B表不作釋放空間的處理 ( 3)本題基本與( 2)相同,但要求無重復(fù)元素,故在算法中,待合并結(jié)點數(shù)據(jù)要與其前驅(qū)比較 ,只有在與前驅(qū)
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1