




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上2.4已知順序表L遞增有序,試寫一算法,將X插入到線性表的適當(dāng)位置上,以保持線性表的有序性。解:int InsList(SeqList *L,int X) int i=0,k; if(L-last=MAXSIZE-1)printf(表已滿無(wú)法插入!);return(ERROR);while(ilast&L-elemilast;k=I;k-)L-elemk+1=L-elemk; L-elemi=X; L-last+; return(OK); 2.5寫一算法,從順序表中刪除自第i個(gè)元素開始的k個(gè)元素。解:int LDel(Seqlist *L,int i,int k)if
2、(i=1|(i+kL-last+1)printf(輸入的i,k值不合法);return(ERROR);else if(i+k=L-last+2)L-last=i-2;return OK;elsej=i+k-1;while(jlast)elemj-k=elemj;j+;L-last=L-last-k+1;return OK;2.6已知線性表中的元素(整數(shù))以遞增有序排列,并以單鏈表作存儲(chǔ)結(jié)構(gòu)。試寫一高效算法,刪除表中所有大于mink且小于maxk的元素(若表中存在這樣的元素),分析你的算法的時(shí)間復(fù)雜度(注意:mink和maxk是給定的兩個(gè)變量,他們的值為任意的整數(shù))。解:int Delete(L
3、inklist,int mink,int maxk)Node *p,*q;p=L;while(p-next!=NULL)p=p-next;if(mink=maxk|L-next-data=maxk|mink+1=maxk)printf(參數(shù)不合法!);return ERROR;elsewhile(p-next-datanext;q=p-next;while(q-datanext=q-next;free(q);q=p-next;return OK;2.7試分別以不同的存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)線性表的就地逆置算法,即在原表的儲(chǔ)存空間將線性表(a1,a1,,an)逆置為(an,an-1,a1)。 (1)以順序表
4、作存儲(chǔ)結(jié)構(gòu)。解:int ReversePosition(SpList L)int k,temp,len;int j=0;k=L-last;len=L-last+1;for(j;jelemk-j;elemk-j=elemj;elemj=temp;return OK; (2)以單鏈表作存儲(chǔ)結(jié)構(gòu)。解:int ReversePosition(Linklist L)Node *NL,q,r;q=L;r=L;NL=L-next;if(NL=NULL)return ERROR;while(q-next!=NULL)q=q-next;r-next=q;r=q;while(NL-next!=r&NL-next!
5、=NULL)q=NL;while(q-next!=r)q=q-next;r-next=q; r=q;r-next=NL; NL-next=NULL: return OK;2.8假設(shè)兩個(gè)按元素值遞增有序排列的線性表A和B,均以單鏈表作為存儲(chǔ)結(jié)構(gòu),請(qǐng)編寫算法,將A表和B表歸并成一個(gè)按元素值遞減的有序排列的線性表C,并要求利用原表(即A表和B表的)結(jié)點(diǎn)空間存放表C解:void merge(SepList *LA,SepList *LB,SepList *LC)Node *p1,*p2,*q1,*q2;LA-next=p1;LB-next=q1;while(p1!=NULL&q1!=NULL)if(p
6、1-dataq1-data)q2=q1-next;q1-next=LC-next;LC-next=q;q1=q2;elsep2=p1-next;p1-next=LC-next;LC-next=p1;p1=p2;2.9假設(shè)有一個(gè)循環(huán)鏈表的長(zhǎng)度大于1,且表中既無(wú)頭結(jié)點(diǎn)也無(wú)頭指針。已知s為指向鏈表某個(gè)結(jié)點(diǎn)的指針,試編寫算法在鏈表中刪除指針s所指結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn)。解:ElemType DeletePreElem (Node *s)ElemType temp;Node *p,*pre;p=s;while(p-next!=s)p=p-next;pre=p;while(p-next!=pre)p=p-next
7、;p-next=s;temp=pre-data;free(pre);return temp;2.10已知有單鏈表表示的線性表中含有三類字符的數(shù)據(jù)元素(如字母字符、數(shù)字字符和其他字符),試編寫算法來(lái)構(gòu)造三個(gè)以循環(huán)鏈表表示的線性表,使每個(gè)表中只含同一類字符,且利用原表中的結(jié)點(diǎn)空間作為這三個(gè)表的結(jié)點(diǎn)空間,頭結(jié)點(diǎn)可另辟空間。解:LinkList_Divide(LinkList &L,CiList &A,CiList &B,CiList &C)/把單鏈表L的元素按類型分為三個(gè)循環(huán)鏈表.CiList為帶頭結(jié)點(diǎn)的單循環(huán)鏈表類型. s=L-next; A=(CiList*)malloc(sizeof(CiLN
8、ode); p=A; B=(CiList*)malloc(sizeof(CiLNode); q=B; C=(CiList*)malloc(sizeof(CiLNode); r=C; /建立頭結(jié)點(diǎn) while(s!=NULL) if(s-data=a&s-datadata=A&s-datanext=s; p=s; else if(s-data=0&s-datanext=s; q=s; else r-next=s; r=s; p-next=A; q-next=B; r-next=C; 2.11設(shè)線性表A=(a1,a2,,am),B=(b1,b2,bn),試寫一個(gè)按下列規(guī)則合并A、B為線性表C的算法
9、,使得C=(a1,b1,an,bn,an+1,am)當(dāng)mn時(shí)或者C=(a1,b1,am,bm,bm+1,bn)當(dāng)mnext;pb=B-next;while(pa!=NULL&pb!=NULL)r-next=pa;r=pa;pa=pa-next;r-next=pb;r=pb;pb=pb-next;if(pa=NULL)r-next=pb;elser-next=pa;return(C);2.12將一個(gè)用循環(huán)鏈表表示的稀疏多項(xiàng)式分解成兩個(gè)多項(xiàng)式,使這兩個(gè)多項(xiàng)式中各自僅含奇次項(xiàng)或偶次項(xiàng),并要求利用原鏈表中的結(jié)點(diǎn)空間來(lái)構(gòu)成這兩個(gè)鏈表。解:typedef struct Polynodeint coef;i
10、nt exp;struct polynode *next;Polynode *PolyList;void GreateCircle LinklistC(Linklist RL,Node *e)Node *p;p=RL-next;RL-next=e;RL=RL-next;RL-next=p;void DescouposeList(Linklist RL Descoupose RA Descoupose RB)Node *p;p=RL-next;if(p-next=NULL)return;p=p-next;while(p!=RL-next)if(p-exp%2=0)Greate(RB,p);elseGreate(RA,p);p=p-next;2.13建立一個(gè)帶頭節(jié)點(diǎn)的線性表,用以存放輸入的二進(jìn)制數(shù),鏈表中每個(gè)結(jié)點(diǎn)的data域存放一個(gè)二進(jìn)制位,并在此鏈上實(shí)現(xiàn)對(duì)二進(jìn)制數(shù)加1的運(yùn)算。解:void BinnaryFod(Dlinklist DL)DNode *p,*s;p=DL;while(p-prior!
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025冰箱清潔服務(wù)合同
- 2025辦公室裝修合同書協(xié)議
- 2025租賃合同(辦公樓)
- 2025物業(yè)管理委托合同模板
- 2025房屋買賣的合同書樣本
- 2024年醫(yī)用電子直線加速器項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 2025版合同范本模板下載
- 纖維基太陽(yáng)能電池的研究考核試卷
- 2025合同法規(guī)管理包含哪些內(nèi)容
- 《動(dòng)感十足的》課件
- 鏟車三個(gè)月、半年、年保養(yǎng)記錄(新)
- 腦電圖(圖譜)課件
- 給水廠畢業(yè)設(shè)計(jì)正文(全)
- 《概率思想對(duì)幾個(gè)恒等式的證明(論文)9600字》
- 重金屬冶金學(xué)-鈷冶金課件
- 《EBSD數(shù)據(jù)分析》課件
- 初高中生物銜接課課件
- KET詞匯表(英文中文完整版)
- DBJ61-T 112-2021 高延性混凝土應(yīng)用技術(shù)規(guī)程-(高清版)
- JJF(閩)1097-2020總?cè)芙夤腆w(TDS)測(cè)定儀校準(zhǔn)規(guī)范-(現(xiàn)行有效)
- 推拉門定制安裝合同協(xié)議書范本
評(píng)論
0/150
提交評(píng)論