




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上2.4已知順序表L遞增有序,試寫一算法,將X插入到線性表的適當位置上,以保持線性表的有序性。解:int InsList(SeqList *L,int X) int i=0,k; if(L-last=MAXSIZE-1)printf(表已滿無法插入!);return(ERROR);while(ilast&L-elemilast;k=I;k-)L-elemk+1=L-elemk; L-elemi=X; L-last+; return(OK); 2.5寫一算法,從順序表中刪除自第i個元素開始的k個元素。解: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已知線性表中的元素(整數)以遞增有序排列,并以單鏈表作存儲結構。試寫一高效算法,刪除表中所有大于mink且小于maxk的元素(若表中存在這樣的元素),分析你的算法的時間復雜度(注意:mink和maxk是給定的兩個變量,他們的值為任意的整數)。解: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(參數不合法!);return ERROR;elsewhile(p-next-datanext;q=p-next;while(q-datanext=q-next;free(q);q=p-next;return OK;2.7試分別以不同的存儲結構實現線性表的就地逆置算法,即在原表的儲存空間將線性表(a1,a1,,an)逆置為(an,an-1,a1)。 (1)以順序表
4、作存儲結構。解: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)以單鏈表作存儲結構。解: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假設兩個按元素值遞增有序排列的線性表A和B,均以單鏈表作為存儲結構,請編寫算法,將A表和B表歸并成一個按元素值遞減的有序排列的線性表C,并要求利用原表(即A表和B表的)結點空間存放表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假設有一個循環鏈表的長度大于1,且表中既無頭結點也無頭指針。已知s為指向鏈表某個結點的指針,試編寫算法在鏈表中刪除指針s所指結點的前驅結點。解: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已知有單鏈表表示的線性表中含有三類字符的數據元素(如字母字符、數字字符和其他字符),試編寫算法來構造三個以循環鏈表表示的線性表,使每個表中只含同一類字符,且利用原表中的結點空間作為這三個表的結點空間,頭結點可另辟空間。解:LinkList_Divide(LinkList &L,CiList &A,CiList &B,CiList &C)/把單鏈表L的元素按類型分為三個循環鏈表.CiList為帶頭結點的單循環鏈表類型. 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; /建立頭結點 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設線性表A=(a1,a2,,am),B=(b1,b2,bn),試寫一個按下列規則合并A、B為線性表C的算法
9、,使得C=(a1,b1,an,bn,an+1,am)當mn時或者C=(a1,b1,am,bm,bm+1,bn)當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將一個用循環鏈表表示的稀疏多項式分解成兩個多項式,使這兩個多項式中各自僅含奇次項或偶次項,并要求利用原鏈表中的結點空間來構成這兩個鏈表。解: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建立一個帶頭節點的線性表,用以存放輸入的二進制數,鏈表中每個結點的data域存放一個二進制位,并在此鏈上實現對二進制數加1的運算。解:void BinnaryFod(Dlinklist DL)DNode *p,*s;p=DL;while(p-prior!
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級下冊文化交流實踐活動計劃
- 2025年閩教四年級下冊信息技術課程計劃
- 2025學年物理實驗教學計劃與技術支持
- 籃球運動傷害預防計劃
- 青年創業與電商直播教學計劃
- 2025大班下學期素質教育推廣計劃
- 湘少版五年級下冊英語教學資源計劃
- 2025年第六屆彩云杯中華傳統文化知識競賽題庫及答案(六年級)
- 2025年地震科普知識競賽試題及答案
- 古典音樂師徒傳授計劃
- 鏟車三個月、半年、年保養記錄(新)
- 腦電圖(圖譜)課件
- 給水廠畢業設計正文(全)
- 《概率思想對幾個恒等式的證明(論文)9600字》
- 重金屬冶金學-鈷冶金課件
- 《EBSD數據分析》課件
- 初高中生物銜接課課件
- KET詞匯表(英文中文完整版)
- DBJ61-T 112-2021 高延性混凝土應用技術規程-(高清版)
- JJF(閩)1097-2020總溶解固體(TDS)測定儀校準規范-(現行有效)
- 推拉門定制安裝合同協議書范本
評論
0/150
提交評論