版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第C語言算法學(xué)習(xí)之雙向鏈表詳解目錄一、練習(xí)題目二、算法思路1、設(shè)計瀏覽器歷史記錄2、扁平化多級雙向鏈表3、展平多級雙向鏈表4、二叉搜索樹與雙向鏈表
一、練習(xí)題目
題目鏈接難度1472.設(shè)計瀏覽器歷史記錄★★★☆☆430.扁平化多級雙向鏈表★★★☆☆劍指OfferII028.展平多級雙向鏈表★★★☆☆劍指Offer36.二叉搜索樹與雙向鏈表★★★★☆
二、算法思路
1、設(shè)計瀏覽器歷史記錄
1.這是一個模擬題;
2.初始化生成一個頭結(jié)點,記錄一個當(dāng)前結(jié)點;
3.向前和向后是兩個類似的過程,可以統(tǒng)一實現(xiàn),注意一些邊界條件。
structNode{
stringval;
Node*prev;
Node*next;
classBrowserHistory{
Node*List,*Current;
public:
BrowserHistory(stringhomepage){
List=newNode();
List-prev=List-next=nullptr;
List-val=homepage;
Current=List;
voidvisit(stringurl){
Node*Next=Current-next;
if(Next==nullptr){
Current-next=newNode();
Current-next-next=nullptr;
Current-next-prev=Current;
}else{
Node*tmp=Next-next;
Next-next=nullptr;
//free
while(tmp){
Node*node=tmp-next;
deletetmp;
tmp=node;
Current-next-val=url;
Current=Current-next;
stringback(intsteps){
stringstr=Current-
Node*pre;
while(steps--Current){
pre=Current;
Current=Current-prev;
if(Current)str=Current-
if(nullptr==Current)Current=pre;
returnstr;
stringforward(intsteps){
stringstr=Current-
Node*pre;
while(steps--Current){
pre=Current;
Current=Current-next;
if(Current)str=Current-
if(nullptr==Current)Current=pre;
returnstr;
};
2、扁平化多級雙向鏈表
1.利用一個遞歸函數(shù)last=dfs(now),一旦遇到child域非空的結(jié)點,則遞歸計算clast=dfs(now-child),返回值是遞歸展平后的最后一個結(jié)點,然后進(jìn)行雙向鏈表的鏈接操作。
2.例如,當(dāng)前有child域的結(jié)點為now,它的下一個結(jié)點是next,遞歸計算以后得到展平的鏈表的最后一個結(jié)點為clast,則有如下關(guān)系:
nownow-child...clastnext
3.根據(jù)以上關(guān)系調(diào)整雙向鏈表,注意不要忘記將child域置空。
4.當(dāng)遍歷到這個雙向鏈表的最后一個結(jié)點的時候,如果它有child域,則當(dāng)前鏈表的最后一個結(jié)點就是clast,否則就是它自己now;
classSolution{
Node*dfs(Node*head){
Node*now=head;
Node*last=nullptr;
while(now){
Node*cLast;
if(now-child){
cLast=dfs(now-child);
Node*next=now-next;
//now--cFirst...cLastnext;
now-next=now-child;
now-child=nullptr;
now-next-prev=now;
if(next){
next-prev=cLast;
cLast-next=next;
if(now-next==nullptr){
if(now-child){
last=cLast;
}else{
last=now;
now=now-next;
returnlast;
public:
Node*flatten(Node*head){
if(head==nullptr){
returnnullptr;
Node*last=dfs(head);
last-next=nullptr;
returnhead;
};
3、展平多級雙向鏈表
(1)同上一題。
4、二叉搜索樹與雙向鏈表
(1)遇到這樣的題,首先需要設(shè)計好遞歸函數(shù);
(2)像這個問題,對于左子樹和右子樹,需要知道雙向鏈表的頭結(jié)點和尾結(jié)點,所以遞歸的時候需要返回兩個值,于是可以直接采用函數(shù)傳指針進(jìn)行返回,由于二叉樹的結(jié)點本身就是指針,所以需要傳二級指針;
(3)遞歸計算左子樹變成雙向鏈表的情況;
(4)遞歸計算右子樹變成雙向鏈表的情況;
(5)將左子樹的雙向鏈表鏈接到root左邊,將右子樹的雙向鏈表鏈接到root右邊,然后根據(jù)遞歸函數(shù)的實際作用,返回頭結(jié)點和尾結(jié)點。
classSolution{
voiddfs(Node*root,Node**minNode,Node**maxNode){
if(root==nullptr){
*minNode=nullptr;
*maxNode=nullptr;
return;
Node*lminNode,*lmaxNode,*rminNode,*rmaxNode;
if(root-left){
dfs(root-left,lminNode,lmaxNode);
lmaxNode-right=root;
root-left=lmaxNode;
*minNode=lminNode;
}else{
*minNode=root;
if(root-right){
dfs(root-right,rminNode,rmaxNode);
rminNode-left=root;
root-right=rminNode;
*maxNode=rmaxNode;
}else{
*maxNode=root;
public:
Node*treeToDoublyList(Node*root){
if(root
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年鄭州單招上機測試題及答案1套
- 2026年重慶市雅安地區(qū)單招職業(yè)傾向性測試模擬測試卷附答案
- 2026年西南財經(jīng)大學(xué)天府學(xué)院單招職業(yè)傾向性測試題庫及答案1套
- 2026年貴州工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試模擬測試卷及答案1套
- 2026年連云港職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試模擬測試卷附答案
- 漂流景區(qū)安全培訓(xùn)知識課件
- 電廠安全防護(hù)培訓(xùn)總結(jié)課件
- 滿堂支架培訓(xùn)
- 2025年汽車銷售與服務(wù)流程手冊
- 2025 小學(xué)六年級數(shù)學(xué)上冊圓的苔原活動設(shè)計課件
- 醫(yī)療器械銷售年終工作總結(jié)
- 快遞行業(yè)運營部年度工作總結(jié)
- 《蘇教版六年級》數(shù)學(xué)上冊期末總復(fù)習(xí)課件
- 上海市二級甲等綜合醫(yī)院評審標(biāo)準(zhǔn)(2024版)
- 油漆班組安全晨會(班前會)
- 消費類半固態(tài)電池項目可行性研究報告
- 山東省濟南市2024年1月高二上學(xué)期學(xué)情期末檢測英語試題含解析
- 口腔門診醫(yī)療質(zhì)控培訓(xùn)
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- HGT4134-2022 工業(yè)聚乙二醇PEG
- 小學(xué)教職工代表大會提案表
評論
0/150
提交評論