數(shù)據(jù)結(jié)構(gòu)算法題復(fù)習(xí)_第1頁
數(shù)據(jù)結(jié)構(gòu)算法題復(fù)習(xí)_第2頁
數(shù)據(jù)結(jié)構(gòu)算法題復(fù)習(xí)_第3頁
數(shù)據(jù)結(jié)構(gòu)算法題復(fù)習(xí)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)算法題復(fù)習(xí)(線性表和二叉樹)1. 設(shè)計在單鏈表中刪除值相同的多余結(jié)點的算法。typtdef mt datat;-pe;t._p def struci node datzB'pe data; struct nod * next; lk list;void delredundantflklisi Ahead)1Ilklist *p/qz*s;forij)=head;pf=Q ;p=p->nexr) for(q-p->nexts-q:q!-O;) if (q'>data=p->data) s '>netq->next: free(q

2、): q=s- >nexti eke $=qrq=q->ne5rt!2. 設(shè)計在鏈式存儲結(jié)構(gòu)上交換二叉樹中所有結(jié)點左右子樹的算法。tj-pdef struct no-d mt dita: struct node khdd/rttuld; bitree: void swapbiiree<t)iire *bt)bitiee *p:ifbt=O) return;s'wapbineei. bt-> lc inld); g輕衛(wèi)pbiTr ee(b t->rchild)-; p-bt->lciiild; bt->lcluld-bv>fchild; l

3、)i->rchiJd-p:3. 設(shè)計一個在鏈式存儲結(jié)構(gòu)上統(tǒng)計二叉樹中結(jié)點個數(shù)的算法。void countfiodhLtree :hbtinti count-n-; eouritn ode(b t->lchi ldount), c o-u nlnotle (bt->rc Iiild, count);4. 設(shè)計判斷單鏈表中元素是否是遞增的算法。mtMhad)(if?head=O| head->next=O) return(1):elsefbr(q=hea-d:p=head->ne?tt: p!=0; q-prp-p->next)iffq->data>

4、p->data) renimfO); rtiirjif 1;mt CountX(LNode* HL:ElemType £ tnt i=0: LXode* p=HL;Vi 為i+數(shù)器 whik(p?-NULL)if (P-xlata=x) i-+; p=p->next: avLIs,出循環(huán)時i中的值即為x結(jié)點個數(shù) return i; .'CountX6.設(shè)有兩個集合 A和集合B,要求設(shè)計生成集合C=A A B的算法,其中集合 A、B和C用鏈式存儲結(jié)構(gòu)表示。hpedef struct node mt data, struct no-de ' next;lkii

5、Bt:void iniersecuoti(lklin *ha;llclis: *htJklisT *&hc)lklistfbq 尸 ha, hc=O ;p'=0 ;p=p-> next) fbr(q*hb;q!=0:q=q->next) if tQ->data=p->data) break;if(q(=O) t=(lkli5t *)oialloc(sizeoflklL5t); t->data=p->data:t->next=hc: hc=tJ 7設(shè)計一個求結(jié)點x在二叉樹中的雙親結(jié)點算法。B-pedf struct node dtiK-p

6、e- datn: struct n-odechild:Ntree *q2C; intr-0rf0:flaff»0;void pMfdcr(bitK亡 *bt char sif(bt!=0 &&. flag=O)if i bt->daTa=> ilag=l: remm;else 封=9+1)% 20. qr=bt. prearder(bt->khild.K). preordei(bt->rchild.x. void p3r<nt(t?iiree *bt1char xinti;prwrdertbt,!);for(i=f-l: i<=r:

7、 i卄)if rqi->lctnld->daia=x qi->r匚hiltl-xiatd i bieak;if (flas=O) prin'Qot ibund x iT);el$e if i<F) printfl(-r%celse pninfnot parent");8設(shè)計計算二叉樹中所有結(jié)點值之和的算法。v<5id stimfbitree btifit gifibt!=O) s=s-b1-data. suniibt-khild.sj; sum(bt-!>rcLild.s).9.給出算法分別求出二叉樹的葉結(jié)點、度數(shù)為1的結(jié)點、度數(shù)為 2的結(jié)

8、點的個數(shù)。結(jié)點計數(shù)可以在遍歷甲解塊樣扌隴E誼問根結(jié)點化'遞歸調(diào)用左子樹叫“遙歸調(diào)用右子樹” 三者位蠱的不同,而有先序、中序和后序遍歷。4mft n2, nl, nO;設(shè)番三個局變量分別記度為2,1和葉結(jié)點的個數(shù)*void countj BiTree t)x-rf(t->lc:hfldchild) n2+;*Jelse it->lchild '蠡& !t->rchild | | !t->lchild A£tt->rchildj nl-n+j+Jelse r>0+;*'rf(?->lchi Id 1-null) c

9、ou ntftlchildJj+J眥 t->rch ild!=null)count (t *> rchfi Id 評F10. 已知一個順序表中的各結(jié)點值是從小到大有序的,設(shè)計一個算法,插入一個值為x的結(jié)點,使順序表中的結(jié)點仍然是從小到大有序(不考慮空間不夠用的情況)。tvped&f structpVXMWWWVelemtvpe *刨己閃片應(yīng)length評ISqLiEt:喇i MErt (純褰&L輙煎贈)屮p=Lelem+Llen£th!+'歡學(xué)r-PD rp+lhp屮伽吋A11. 設(shè)計一個算法,判斷一個單鏈表中的各個結(jié)點值是否遞增有序(帶頭結(jié)點的單鏈表)。typed ef struct Ln ode+elemtype data:+Jstrurt Lnode FeM;*1辿回已 LinkList;intiudgeiLinkList L胳vvt W MWVWUW r 0p=L->next;

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論