![第二章 線性表_第1頁(yè)](http://file4.renrendoc.com/view/96965696c05a136b01237e2090c4d154/96965696c05a136b01237e2090c4d1541.gif)
![第二章 線性表_第2頁(yè)](http://file4.renrendoc.com/view/96965696c05a136b01237e2090c4d154/96965696c05a136b01237e2090c4d1542.gif)
![第二章 線性表_第3頁(yè)](http://file4.renrendoc.com/view/96965696c05a136b01237e2090c4d154/96965696c05a136b01237e2090c4d1543.gif)
![第二章 線性表_第4頁(yè)](http://file4.renrendoc.com/view/96965696c05a136b01237e2090c4d154/96965696c05a136b01237e2090c4d1544.gif)
![第二章 線性表_第5頁(yè)](http://file4.renrendoc.com/view/96965696c05a136b01237e2090c4d154/96965696c05a136b01237e2090c4d1545.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章線性表StatusDeleteK(SqList&a,inti,intk)〃刪除線性表a中第i個(gè)元素起的k個(gè)元素(returnOK;}//DeleteKStatusInsert_SqList(SqList&va,intx)〃把x插入遞增有序表va中returnOK;}//Insert_SqListintListComp(SqListA,SqListB)〃比較字符表A和B,并用返回值表示結(jié)果,值為正,表示A>B;后為負(fù),表示AvB;值為零,表示A=B{return0;}//ListCompLNode*Locate(LinkListLJntx)〃鏈表上的元素查找,返回指針(for(p=l->next;p&&p->data!=x;p=p->next);returnp;}//LocateintLength(LinkListL)〃求鏈表的長(zhǎng)度(for(k=0,p=L;p->next;p=p->next,k++);returnk;}//LengthvoidListConcat(LinkListha,LinkListhb,LinkList&hc)〃把鏈表hb接在ha后面形成鏈表he)〃此時(shí)P指向最后一個(gè)奇數(shù)結(jié)點(diǎn)if(p->next==L)p->next=L->pre->pre;elsep->next=l->pre;p=p->next;//此時(shí)p指向最后一個(gè)偶數(shù)結(jié)點(diǎn)while(p->pre->pre!=L)(p->next=p->pre->pre;p=p->next;)p->next=L;〃按題目要求調(diào)整了next鏈的結(jié)構(gòu),此時(shí)pre鏈仍為原狀for(p=L;p->next!=L;p=p->next)p->next->pre=p;}//OEReform分析:next鏈和pre鏈的調(diào)整只能分開(kāi)進(jìn)行.如同時(shí)進(jìn)行調(diào)整的話,必須使用堆棧保存偶數(shù)結(jié)點(diǎn)的指針,否則將會(huì)破壞鏈表結(jié)構(gòu),造成結(jié)點(diǎn)丟失.DuLNode*Locate_DuList(DuLinkedList&L,intx)〃帶freq域的雙向循環(huán)鏈表上的查找if(p==L)returnNULL;〃沒(méi)找至Up->freq++;q=p->pre;while(q->freq<=p->freq)q=q-〉pre;〃查找插入位置if(q!=p->pre)(p->pre->next=p->next;p->next->pre=p->pre;q->next->pre=p;p->next=q->next;q〉next=p;p->pre=q;〃調(diào)整位置)returnp;}//Locate_DuListfloatGetValue_SqPoly(SqPolyP,intx0)〃求升幕順序存儲(chǔ)的稀疏多項(xiàng)式的值|PolyTerm*q;sum=0;ex=0;while(q->coef)(while(ex<q->exp)xp*=xO;sum+=q->coef*xp;q++;returnsum;}//GetValue_SqPolyvoidSubtract_SqPoly(SqPolyPl,SqPolyP2,SqPoly&P3)〃求稀疏多項(xiàng)式Pl減P2的差式P3(PolyTerm*p,*q,*r;Create_SqPoly(P3);//建立空多項(xiàng)式P3while(p->coef&&q->coef)(if(p->exp<q->exp)(r->coef=p->coef;r->exp=p->exp;p++;r++;}elseif(p->exp<q->exp)(r->coef-q->coef;r->exp=q->exp;q++;r++;)else{if((p->coef-q->coef)!=0)//只有同次項(xiàng)相減不為零時(shí)才需要存入P3中(r->coef=p->coef-q->coef;r->exp=p->exp;r++;}//ifp++;q++;}//else}//whilewhile(p->coef)〃處理Pl或P2的剩余項(xiàng)(r->coef=p->coef;r->exp=p->exp;p++;r++;)while(q->coef)(r->coef=-q->coef;r->exp=q->exp;q++;r++;}//Subtract_SqPolyvoidQiuDao_LinkedPoly(LinkedPoly&L)〃對(duì)有頭結(jié)點(diǎn)循環(huán)鏈表結(jié)構(gòu)存儲(chǔ)的稀疏多項(xiàng)式L求導(dǎo)(P=L->next;{L-〉next=p->next;p=p-〉next;//跳過(guò)常數(shù)項(xiàng))while(p!=L)(p=p->next;)}//QiuDao_LinkedPolyvoidDivide_LinkedPoly(LinkedPoly&L,&A,&B)〃把循環(huán)鏈表存儲(chǔ)的稀疏多項(xiàng)式L拆成只含奇次項(xiàng)的A和只含偶次項(xiàng)的B(p=L->next;A=(PolyNode*)malloc(sizeof(PolyNode));B=(PolyNode*)malloc(sizeof(PolyNode));pa=A;pb=B;while(p!=L)pa->next=p;pa=p;)else(pb->next=p;pb=p;)p=p->next;}//whilepa->next=A;pb->next=B;}//Divide_IJnkedPolyhc=ha;p=ha;while(p->next)p=p->next;p->next=hb;}//ListConcat見(jiàn)書(shū)后答案.StatusInsert(LinkList&L,inti,intb)〃在無(wú)頭結(jié)點(diǎn)鏈表L的第i個(gè)元素之前插入元素b(p=L;q=(LinkList*)malloc(sizeof(LNode));if(i==l)()else(while(—i>l)p=p->next;q->next=p-〉next;p->next=q;//插入在第i個(gè)元素的位置)}//InsertStatusDelete(LinkList&L,inti)〃在無(wú)頭結(jié)點(diǎn)鏈表L中刪除第i個(gè)元素(if(i==l)L=L->next;〃刪除第一個(gè)元素else(P=L;while(-i>l)p=p->next;p->next=p->next->next;i個(gè)元素)}//DeleteStatusDelete_Between(Linklist&L,intmink,intmaxk)//刪除元素遞增排列的鏈表L中值大于mink且小于maxk的所有元素(P=L;while(p->next->data<=mink)p=p->next;//p是最后——個(gè)不大于mink的元素if(p->next)//如果還有比mink更大的元素(q=p->next;while(q->data<maxk)q=q->next;//q是第——個(gè)不小于maxk的元素p->next=q;}//Delete_BetweenStatusDelete_Equal(Linklist&L)/刪除元素遞增排列的鏈表L中所有值相同的元素{_p=L->next;q=p->next;〃p,q指向相鄰兩元素while(p->next)(if(p->data!=q->data)(p=p->next;q=p-〉next;//當(dāng)相鄰兩元素不相等時(shí),p,q都向后推一步)else(while(q->data==p->data)(free(q);q=q->next;)p->next=q;p=q;q=p->next;//當(dāng)相鄰元素相等時(shí)刪除多余元素}//else}//while}//Delete_Equalvoidreverse(SqList&A)〃順序表的就地逆置(for(i=lJ=A.length;i<j;i++J—)}//reversevoidLinkList_reverse(Linklist&L)〃鏈表的就地逆置;為簡(jiǎn)化算法,假設(shè)表長(zhǎng)大于2{p=L->next;q=p->next;s=q->next;p->next=NULL;while(s->next)(q->next=p;p=q;q=s;s=s->next;//把L的元素逐個(gè)插入新表表頭)q->next=p;s->next=q;L->next=s;}//LinkList_reverse分析:本算茯的思想是,逐個(gè)地把L的當(dāng)前元素q插入新的鏈表頭部,p為新表表頭.voidmergel(LinkList&A,LinkList&B,LinkList&C)〃把鏈表A和B合并為C,A和B的元素間隔排列,且使用原存儲(chǔ)空間p=A->next;q=B->next;C=A;while(p&&q)s=p->next;p->next=q;〃將B的元素插入if(s)(一t=q->next;q->next=s;〃如A非空,將A的元素插入)p=s;q=t;}//while}//merge1voidreverse_merge(LinkList&A,LinkList&B,LinkList&C)〃把元素遞增排列的鏈表A和B合并為C,且C中元素遞減排列,使用原空間{_pa=A->next;pb=B->next;pre=NULL;//pa和pb分別指向A,B的當(dāng)前元素while(pa||pb)(if(pa->data<pb->data||!pb){_pc=pa;q=pa->next;pa->next=pre;pa=q;//^A的元素插入新表)else{一pc=pb;q=pb->next;pb->next=pre;pb=q;〃將B的元素插入新表}pre=pc;)C=A;A->next=pc;〃構(gòu)造新表頭}//reverse_merge分析:本M去的思想是,按從小到大的順序依次把A和B的元素插入新表的頭部pc處,最后處理A或B的剩余元素.voidSqList_Intersect(SqListA,SqListB,SqList&C)〃求元素遞增排列的線性表A和B的元翥的交集并存入C中i=l;j=l;k=O;i++;j++;〃就添加到C中}}//while}//SqList_IntersectvoidLinkList_Intersect(LinkListA,LinkListB,LinkList&C)〃在鏈表結(jié)構(gòu)上重做上題(p=A->next;q=B->next;pc=(LNode*)malloc(sizeof(LNode));while(p&&q)(if(p->data<q->data)p=p->next;elseif(p->data>q->data)q=q->next;else(s=(LNode*)malloc(sizeof(LNode));s->data=p->data;pc->next=s;pc=s;p=p->next;q=q->next;)}//whileC=pc;}//LinkList_IntersectvoidSqList_Intersect_True(SqList&A,SqListB)〃求元素遞增排列的線性表A和B的元素的交集并存直A中(i=l;j=l;k=O;i++;j++;//且C中沒(méi)有,就添加到C中)}//while}//SqList_Intersect_TruevoidLinkList_Intersect_True(LinkList&A,LinkListB)〃在鏈表結(jié)構(gòu)上重做上題p=A->next;q=B->next;pc=A;while(p&&q)(if(p->data<q->data)p=p->next;elseif(p->data>q->data)q=q->next;elseif(p->data!=pc->data)(pc=pc->next;pc->data=p->data;p=p->next;q=q->next;)}//while}//LinkList_Intersect_TruevoidSqList_Intersect_Delete(SqList&A,SqListB,SqListC)(i=0;j=0;k=0;m=0;〃i指示A中元素原來(lái)的位置,m為移動(dòng)后的位置else}//while}//SqList_Intersect_Delete分析:先從B和C事找出共有元素,記為same,再在A中從當(dāng)前位置開(kāi)始,凡小于same的元素均保留(存到新的位置),等于same的就跳過(guò),到大于same時(shí)就再找下一個(gè)same.voidLinkList_Intersect_Delete(LinkList&A,LinkListB,LinkListC)〃在鏈表結(jié)構(gòu)上重做上題{p=B->next;q=C->next;r=A-next;while(p&&q&&r)if(p->data<q->data)p=p->next;elseif(p->data>q->data)q=q->next;else(u=p-〉data;//確定待刪除元素uwhile(r->next->data<u)r=r->next;〃確定最后一個(gè)小于u的元素指針rif(r->next->data==u)(s=r->next;while(s->data==u)(一t=s;s=s->next;free(t);//確定第一個(gè)大于u的元素指針s}//whiler->next=s;//刪除r和s之間的元素}//ifwhile(p->data=u)p=p->next;while(q->data=u)q=q->next;}//else}//while}//LinkList_Intersect_DeleteStatusDelete_Pre(CiLNode*s)〃刪除單循環(huán)鏈表中結(jié)點(diǎn)s的直接前驅(qū)(P=S;while(p->next->next!=s)p=p->next;//找到s的前驅(qū)的前驅(qū)pp->next=s;returnOK;}//Delete_PreStatusDuLNode_Pre(DuLinkList&L)〃完成雙向循環(huán)鏈表結(jié)點(diǎn)的pre域(for(p=L;!p->next->pre;p=p->next)p->next->pre=p;returnOK;}//DuLNode_Pres=L->next;A=(CiList*)malloc(sizeof(CiLNode));p=A;B=(CiList*)malloc(sizeof(CiLNode));q=B;C=(CiList*)malloc(sizeof(CiLNode));r=C;//建立頭結(jié)點(diǎn)while(s)if(isalphabet(s->data))p->next=s;p=s;)elseif(isdigit(s->data))(q->next=s;q=s;}else(r->next=s;r=s;)}//whilep->next=A;q->next=B;r->next=C;//完成循環(huán)鏈表}//LinkList_DividevoidPrint_XorLinkedList(XorLinkedListL)〃從左向右輸出異或鏈表的元素值(while(p)(printf(n%dn,p->data);q=XorP(p->LRPtr,pre);pre=p;p=q;〃任何一個(gè)結(jié)點(diǎn)的LRPtr域值與其左結(jié)點(diǎn)指針進(jìn)行異或運(yùn)算即得到其右結(jié)點(diǎn)指針)}//Print_XorLinkedListStatusInsert_XorLinkedList(XorLinkedList&L,intx,inti)〃在異或鏈表L的第i個(gè)元素前插入元素x(r=(XorNode*)malloc(sizeof(XorNode));r->data=x;if(i==l)//當(dāng)插入點(diǎn)在最左邊的情況(r->LRPtr=p;returnOK;)j=l;q=p->LRPtr;//當(dāng)插入點(diǎn)在中間的情況while(++j<i
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代環(huán)保材料在建筑領(lǐng)域的應(yīng)用前景
- 現(xiàn)代交通工具設(shè)計(jì)中傳統(tǒng)文化的融入方式
- 基坑安全專項(xiàng)方案
- 現(xiàn)代東方風(fēng)洗浴中心的節(jié)能環(huán)保裝修方案
- 2024年春九年級(jí)化學(xué)下冊(cè) 第9單元 溶液 實(shí)驗(yàn)活動(dòng)5 一定溶質(zhì)質(zhì)量分?jǐn)?shù)的氯化鈉溶液的配制說(shuō)課稿 (新版)新人教版
- 2023三年級(jí)英語(yǔ)下冊(cè) Unit 1 Animals on the farm Lesson 3 Fish and Birds說(shuō)課稿 冀教版(三起)
- 2023二年級(jí)數(shù)學(xué)上冊(cè) 一 加與減第1課時(shí) 誰(shuí)的得分高配套說(shuō)課稿 北師大版
- 2025蓄電池產(chǎn)品及零部件檢驗(yàn)合同書(shū)
- 《5 奇形怪狀的熱帶魚(yú)(圖形工具)》說(shuō)課稿-2023-2024學(xué)年清華版(2012)信息技術(shù)一年級(jí)上冊(cè)
- 2024秋五年級(jí)英語(yǔ)上冊(cè) Module 2 Unit 1 What did you buy說(shuō)課稿 外研版(三起)
- 廣東省廣州市2025屆高三上學(xué)期12月調(diào)研測(cè)試(零模)英語(yǔ) 含解析
- 偏癱足內(nèi)翻的治療
- 蘭溪市排水防澇提升雨污管網(wǎng)修復(fù)改造初步設(shè)計(jì)文本
- 藥企質(zhì)量主管競(jìng)聘
- 信息對(duì)抗與認(rèn)知戰(zhàn)研究-洞察分析
- 2024-2025學(xué)年人教版八年級(jí)上冊(cè)地理期末測(cè)試卷(一)(含答案)
- GB/T 44546-2024建筑用裝配式集成吊頂通用技術(shù)要求
- 心腦血管疾病預(yù)防課件
- 中央2025年中國(guó)農(nóng)業(yè)銀行研發(fā)中心校園招聘344人筆試歷年參考題庫(kù)解題思路附帶答案詳解
- 手術(shù)室??谱o(hù)士工作總結(jié)匯報(bào)
- 2025屆高三聽(tīng)力技巧指導(dǎo)-預(yù)讀、預(yù)測(cè)
評(píng)論
0/150
提交評(píng)論