鏈結(jié)串列Linked26課件_第1頁
鏈結(jié)串列Linked26課件_第2頁
鏈結(jié)串列Linked26課件_第3頁
鏈結(jié)串列Linked26課件_第4頁
鏈結(jié)串列Linked26課件_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章鏈結(jié)串列(LinkedLists)3-1Java的抽象類別與介面3-2鏈結(jié)串列的基礎(chǔ)3-3單向鏈結(jié)串列3-4環(huán)狀鏈結(jié)串列3-5雙向鏈結(jié)串列3-6鏈結(jié)串列的應(yīng)用-多項式表示法3-1Java的抽象類別與介面3-1-1Java的抽象類別3-1-2Java的介面3-1Java的抽象類別與介面「抽象類別」(AbstractClass)是一種不能完全代表物件的類別,換句話說,它並不能建立物件,其主要的目是作為類別繼承的父類別,用來定義一些類別的共同部分,在第3-3節(jié)筆者將使用抽象類別定義單向和環(huán)狀串列共同部分的抽象類別List。Java介面(Interface)是在類別繼承架構(gòu)中定義類別行為,內(nèi)含常數(shù)和介面方法宣告,在本章的串列和第4、5章的堆疊和佇列都將使用介面來定義資料結(jié)構(gòu)類別的行為。3-1-1Java的抽象類別-抽象類別抽象類別是子類別的原型宣告,抽象方法宣告子類別使用介面的方法,如果類別擁有抽象方法,表示類別一定是一個抽象類別。例如:抽象類別Shape,如下所示:abstractclassShape{publicdoublex;publicdoubley;abstractvoidarea();}3-1-1Java的抽象類別-繼承抽象類別宣告Circle類別繼承Shape類別,如下所示:classCircleextendsShape{publicdoubler;publicCircle(doublex,doubley,doubler){…}publicvoidarea(){System.out.println("圓面積:"+3.1416*r*r);}}3-2鏈結(jié)串列的基礎(chǔ)-說明「有序串列」(OrderedList)或稱為「線性串列」(LinearList)是一種元素間擁有順序的集合,如下所示:(a0,a1,a2,…,an),ai,0<=i<=n上述集合是一個線性串列,如果是空的線性串列,表示串列中沒有任何元素,是使用()空括號表示。3-2鏈結(jié)串列的基礎(chǔ)-運算線性串列的相關(guān)運算,如下所示:length():取得線性串列的長度。getNode():取得線性串列的第i個元素。searchNode():從左到右,或從右到左走訪線性串列,搜尋指定的元素。deleteNode():在線性串列第i個元素刪除元素。insertNode():在線性串列第i個元素插入元素。3-2鏈結(jié)串列的基礎(chǔ)-Java介面01:/*程式範(fàn)例:ListInterface.java*/02://ListInterface介面宣告03:publicinterfaceListInterface{04://介面方法:取得串列長度05:intlength();06://介面方法:取得線性串列的第i個元素07:NodegetNode(inti);08://介面方法:搜尋節(jié)點資料09:NodesearchNode(intd);10://介面方法:插入節(jié)點11:voidinsertNode(Nodeptr,intd);12://介面方法:刪除節(jié)點13:intdeleteNode(Nodeptr);14:}3-2鏈結(jié)串列的基礎(chǔ)-使用陣列實作線性串列3-2鏈結(jié)串列的基礎(chǔ)-使用鏈結(jié)串列實作線性串列「鏈結(jié)串列」(LinkedLists)是一種實作線性串列的資料結(jié)構(gòu)。在現(xiàn)實生活中,鏈結(jié)串列如同火車掛車廂以線性方式將車廂連結(jié)起來,每個車廂是鏈結(jié)串列的節(jié)點(Nodes),儲存線性串列的資料,車廂和車廂之間的鏈結(jié),就是節(jié)點間的鏈結(jié)(Link)。如下圖所示:3-2鏈結(jié)串列的基礎(chǔ)-使用鏈結(jié)串列實作線性串列(實作)在Java語言建立鏈結(jié)串列是宣告節(jié)點類別,內(nèi)含指標(biāo)的成員變數(shù)來鏈結(jié)其它節(jié)點,每一個節(jié)點就是一個物件,這是在執(zhí)行階段才依需要建立的節(jié)點物件,所以可以解決物件陣列實作上浪費記憶體的問題。例如:使用鏈結(jié)串列建立的郵寄名單,筆者僅以編號(從大到?。┐砻麊蔚墓?jié)點資料,郵寄名單的鏈結(jié)串列,如下圖所示:3-3單向鏈結(jié)串列3-3-1單向鏈結(jié)串列類別3-3-2刪除單向鏈結(jié)串列的節(jié)點3-3-3插入單向鏈結(jié)串列的節(jié)點3-3單向鏈結(jié)串列-抽象類別01:/*程式範(fàn)例:List.java*/02:classNode{//串列節(jié)點類別03:intdata;//節(jié)點資料04:Nodenext;//指下一個節(jié)點的指標(biāo)05://建構(gòu)子:建立節(jié)點06:publicNode(intdata){07:this.data=data;next=null;08:}09:};10://串列的抽象類別11:publicabstractclassList{12:publicNodefirst;//串列的開頭指標(biāo)13://抽象方法:檢查串列是否是空的14:abstractbooleanisListEmpty();15://抽象方法:顯示串列資料16:abstractvoidprintList();17:}3-3-1單向鏈結(jié)串列類別-

繼承抽象類別單向鏈結(jié)串列的類別:SinglyLinked//單向鏈結(jié)串列類別publicclassSinglyLinkedextendsList{//建構(gòu)子:建立單向鏈結(jié)串列publicSinglyLinked(int[]array){……}//方法:檢查串列是否是空的publicbooleanisListEmpty(){……}//方法:顯示串列資料publicvoidprintList(){……}//方法:搜尋節(jié)點資料publicNodesearchNode(intd){……}}3-3-1單向鏈結(jié)串列類別-建構(gòu)子(說明)SinglyLinked()建構(gòu)子:建立單向鏈結(jié)串列在建構(gòu)子是使用for迴圈將取得的陣列值建立成串列節(jié)點,每執(zhí)行一次迴圈,就在串列開頭插入一個新節(jié)點,如下所示:for(inti=0;i<array.length;i++){newnode=newNode(array[i]);newnode.next=first;first=newnode;}3-3-1單向鏈結(jié)串列類別-走訪

(說明)printList()和searchNode()方法:單向鏈結(jié)串列的走訪單向鏈結(jié)串列的「走訪」(Traverse)和一維陣列的走訪十分相似,其差異在於陣列是遞增索引值來走訪陣列,串列是使用指標(biāo)來處理節(jié)點的走訪,如下所示:Nodecurrent=first;while(current!=null){…………..current=current.next;}3-3-1單向鏈結(jié)串列類別-走訪

(圖例)3-3-2刪除單向鏈結(jié)串列的節(jié)點-情況1刪除串列的第1個節(jié)點:只需將串列指標(biāo)first指向下一個節(jié)點,如下圖所示:first=first.next;3-3-2刪除單向鏈結(jié)串列的節(jié)點-情況3(1)刪除串列的中間節(jié)點:將刪除節(jié)點前一個節(jié)點的next指標(biāo),指向刪除節(jié)點下一個節(jié)點,例如:刪除節(jié)點3,如下圖所示:3-3-2刪除單向鏈結(jié)串列的節(jié)點-情況3(2)在執(zhí)行刪除節(jié)點3操作後的串列圖形,如下所示:

while(current.next!=ptr)current=current.next;current.next=ptr.next;3-3-3插入單向鏈結(jié)串列的節(jié)點-情況3(1)將節(jié)點插在串列的中間位置:假設(shè)節(jié)點是插在p和q兩個節(jié)點之間,p是q的前一個節(jié)點,如下圖所示:3-3-3插入單向鏈結(jié)串列的節(jié)點-情況3(2)只需將p指標(biāo)指向新節(jié)點newnode,然後將新節(jié)點指標(biāo)指向q,就可以插入新節(jié)點,如下圖所示:

newnode.next=ptr.next;ptr.next=newnode;3-4環(huán)狀鏈結(jié)串列-說明如果將最後一個節(jié)點的指標(biāo)改為指向單向鏈結(jié)串列開始的第1個節(jié)點,這種串列稱為「環(huán)狀鏈結(jié)串列」(CircularLists)。3-4環(huán)狀鏈結(jié)串列-類別publicclassCircularListextendsListimplementsListInterface{publicCircularList(int[]array){……}publicbooleanisListEmpty(){……}publicvoidprintList(){……}publicintlength(){……}publicNodegetNode(inti){……}publicNodesearchNode(intd){…….}publicvoidinsertNode(Nodeptr,intd){……}publicintdeleteNode(Nodeptr){……}}3-4環(huán)狀鏈結(jié)串列-建構(gòu)子CircularList()建構(gòu)子:建立環(huán)狀串列環(huán)狀鏈結(jié)串列的建構(gòu)子只需稍微修改單向鏈結(jié)串列的建構(gòu)子,在建立好單向鏈結(jié)串列後,再將最後1個節(jié)點的last指標(biāo)指向第1個節(jié)點,即可完成環(huán)狀鏈結(jié)串列的建立,如下所示:last.next=first;3-4環(huán)狀鏈結(jié)串列-走訪環(huán)狀鏈結(jié)串列的走訪也和單向連結(jié)串列的走訪十分相似,因為串列的最後1個節(jié)點是指向第1個節(jié)點,所以檢查是否到串列結(jié)束的條件是current.next==first,而不是current.next==null,如下所示:Nodecurrent=first;do{………current=current.next;}while(current!=first);3-4環(huán)狀鏈結(jié)串列-插入節(jié)點

(情況1-步驟)將節(jié)點插入第1個節(jié)點之前成為串列開始,可以分成3個步驟,如下所示:Step1:將新節(jié)點newnode的next指標(biāo)指向串列的第1個節(jié)點。newnode.next=first;Step2:然後找到最後1個節(jié)點previous且將其指標(biāo)指向新節(jié)點。previous=first;while(previous.next!=first)previous=previous.next;previous.next=newnode;Step3:將串列的開始指向新節(jié)點,新節(jié)點成為串列的第1個節(jié)點。first=newnode;3-4環(huán)狀鏈結(jié)串列-插入節(jié)點

(情況1-圖例)3-4環(huán)狀鏈結(jié)串列-插入節(jié)點

(情況2-步驟)將節(jié)點插在串列中指定節(jié)點之後,例如:將節(jié)點插在節(jié)點ptr之後,節(jié)點插入的操作分成2個步驟,如下所示:Step1:將新節(jié)點newnode的next指標(biāo)指向節(jié)點ptr的下一個節(jié)點。newnode.next=ptr.next;Step2:將節(jié)點ptr的指標(biāo)指向新節(jié)點newnode。ptr.next=newnode;3-4環(huán)狀鏈結(jié)串列-插入節(jié)點

(情況2-圖例)3-4環(huán)狀鏈結(jié)串列-刪除節(jié)點

(情況1-步驟)刪除環(huán)狀串列的第1個節(jié)點可以分成2個步驟,如下所示:Step1:將串列開始的first指標(biāo)移至第2個節(jié)點。first=first.next;Step2:將最後1個節(jié)點的previous指標(biāo)指向第2個節(jié)點。previous.next=ptr.next;3-4環(huán)狀鏈結(jié)串列-刪除節(jié)點

(情況1-圖例)3-4環(huán)狀鏈結(jié)串列-刪除節(jié)點

(情況2-步驟)刪除環(huán)狀串列的中間節(jié)點,例如:刪除節(jié)點ptr的操作分成2個步驟,如下所示:Step1:先找到節(jié)點ptr的前一個節(jié)點previous。while(previous.next!=ptr) previous=previous.next;Step2:將前一個節(jié)點的指標(biāo)指向節(jié)點ptr的下一個節(jié)點。previous.next=ptr.next;3-4環(huán)狀鏈結(jié)串列-刪除節(jié)點

(情況2-圖例)3-5雙向鏈結(jié)串列3-5-1雙向鏈結(jié)串列類別3-5-2雙向鏈結(jié)串列內(nèi)節(jié)點的插入3-5-3雙向鏈結(jié)串列內(nèi)節(jié)點的刪除3-5雙向鏈結(jié)串列-說明「雙向鏈結(jié)串列」(DoublyLinkedLists)是另一種常見的鏈結(jié)串列結(jié)構(gòu),這是一種允許無方向性走訪的鏈結(jié)串列。所以,我們可以將兩個方向相反的單向鏈結(jié)串列結(jié)合起來,建立一種無方向性的鏈結(jié)串列,這就是雙向鏈結(jié)串列,如下圖所示:3-5雙向鏈結(jié)串列-抽象類別101:/*程式範(fàn)例:DList.java*/02:classDNode{//雙向串列的節(jié)點類別03:intdata;//節(jié)點資料04:DNodenext;//指下一個節(jié)點的指標(biāo)05:DNodeprevious;//指向前一個節(jié)點06://建構(gòu)子07:publicDNode(intdata){08:this.data=data;09:next=previous=null;10:}11:};3-5雙向鏈結(jié)串列-抽象類別212:publicabstractclassDList{13:publicDNodefirst;//雙向串列的開頭指標(biāo)14:publicDNodenow;//雙向串列目前節(jié)點指標(biāo)15://抽象方法:顯示雙向串列的節(jié)點資料16:abstractvoidprintDList();17://抽象方法:移動節(jié)點指標(biāo)到下一個節(jié)點18:abstractvoidnextNode();19://抽象方法:移動節(jié)點指標(biāo)到上一個節(jié)點20:abstractvoidpreviousNode();21://抽象方法:重設(shè)節(jié)點指標(biāo)22:abstractvoidresetNode();23://抽象方法:取得節(jié)點指標(biāo)24:abstractDNodereadNode();25:}3-5-1雙向鏈結(jié)串列類別-類別publicclassDoublyLinkedextendsDList{//建構(gòu)子:建立單向鏈結(jié)串列publicDoublyLinked(int[]array){……}//方法:顯示雙向串列的節(jié)點資料publicvoidprintDList(){……}//方法:移動節(jié)點指標(biāo)到下一個節(jié)點publicvoidnextNode(){……}//方法:移動節(jié)點指標(biāo)到上一個節(jié)點publicvoidpreviousNode(){……}//方法:重設(shè)節(jié)點指標(biāo)publicvoidresetNode(){……}//方法:取得節(jié)點指標(biāo)publicDNodereadNode(){……}}3-5-1雙向鏈結(jié)串列類別

-建構(gòu)子(步驟)DoublyLinked類別建構(gòu)子是使用參數(shù)的一維陣列值來建立雙向串列,首先建立第1個節(jié)點,接著使用for迴圈建立雙向串列的其它節(jié)點,其作法是將每一個新節(jié)點都插入在雙向鏈結(jié)串列的最後,如下所示:Step1:將新節(jié)點的previous指標(biāo)指向before指標(biāo)。Step2:將before指向節(jié)點的next指標(biāo)指向新節(jié)點。Step3:before指標(biāo)指向串列的最後1個節(jié)點。3-5-1雙向鏈結(jié)串列類別

-建構(gòu)子(圖例)for(inti=1;i<array.length;i++){newnode=newDNode(array[i]);newnode.previous=before;before.next=newnode;before=newnode;}3-5-1雙向鏈結(jié)串列類別-

走訪雙向鏈結(jié)串列走訪比單向鏈結(jié)串列靈活,因為可以使用next或previous指標(biāo)從2個方向進(jìn)行走訪,在DoublyLinked類別是使用nextNode()、previousNode()和resetNode()成員方法移動now指標(biāo),以便走訪雙向串列的下一個或前一個節(jié)點。讀者如果學(xué)過C++語言的STL(StandardTemplateLibrary)或Java語言的Collections集合物件(第10章有進(jìn)一步的說明),上述雙向串列的走訪方法就是容器物件(Container)的「重複指標(biāo)」(Iterators)。3-5-2雙向鏈結(jié)串列內(nèi)節(jié)點的插入-情況1(步驟)將節(jié)點插在串列中第1個節(jié)點之前:新節(jié)點將成為串列的第1個節(jié)點,其步驟如下所示:Step1:將新節(jié)點newnode的next指標(biāo)指向雙向串列的第1個節(jié)點。newnode.next=first;Step2:將原串列第1個節(jié)點的previous指標(biāo)指向新節(jié)點。first.previous=newnode;Step3:將原串列的first指標(biāo)指向新節(jié)點,新節(jié)點成為環(huán)狀串列的開始。first=newnode;3-5-2雙向鏈結(jié)串列內(nèi)節(jié)點的插入-情況1(圖例)3-5-2雙向鏈結(jié)串列內(nèi)節(jié)點的插入-情況2(步驟)將節(jié)點插在串列的最後:新節(jié)點是插入成為串列的最後1個節(jié)點,其步驟如下所示:Step1:將最後1個節(jié)點ptr的next指標(biāo)指向新節(jié)點newnode。ptr.next=newnode;Step2:將新節(jié)點的previous指標(biāo)指向原串列的最後1個節(jié)點。newnode.previous=ptr;Step3:將新節(jié)點的next指標(biāo)指向null。newnode.next=null;3-5-2雙向鏈結(jié)串列內(nèi)節(jié)點的插入-情況2(圖例)3-5-2雙向鏈結(jié)串列內(nèi)節(jié)點的插入-情況3(步驟)將節(jié)點插入成為串列的中間節(jié)點:如果節(jié)點是插在ptr節(jié)點之後,節(jié)點插入的步驟,如下所示:Step1:將ptr節(jié)點next指向下一個節(jié)點的previous指標(biāo)指向新節(jié)點。 ptr.next.previous=newnode;Step2:新節(jié)點的next指標(biāo)指向ptr節(jié)點next指標(biāo)的下一個節(jié)點。 newnode.next=ptr.next;Step3:新節(jié)點的previous指標(biāo)指向ptr節(jié)點。 newnode.previous=ptr;Step4:將ptr節(jié)點的next指標(biāo)指向新節(jié)點。 ptr.next=newnode;3-5-2雙向鏈結(jié)串列內(nèi)節(jié)點的插入-情況3(圖例)3-5-3雙向鏈結(jié)串列內(nèi)節(jié)點的刪除-情況1刪除串列的第1個節(jié)點:原串列的第2個節(jié)點就成為第1個節(jié)點,其步驟如下所示:Step1:將first指標(biāo)指向第2個節(jié)點。 first=first.next;Step2:將原串列第2個節(jié)點的previous指標(biāo)指定成null。 first.previous=null;3-5-3雙向鏈結(jié)串列內(nèi)節(jié)點的刪除-情況2刪除最後1個節(jié)點:原串列最後第2個節(jié)點就成為最後1個節(jié)點,其步驟如下所示:Step1:將原串列的最後1個節(jié)點的前一個節(jié)點的next指標(biāo)指定成null。 ptr.previous.next=null;3-5-3雙向鏈結(jié)串列內(nèi)節(jié)點的刪除-情況3(步驟)刪除串列內(nèi)的中間節(jié)點:若刪除的是串列中的ptr節(jié)點,操作步驟,如下所示:Step1:將ptr節(jié)點previous指標(biāo)指向的前一個節(jié)點的next指標(biāo)指向ptr節(jié)點的下一個節(jié)點。

ptr.previous.next=ptr.next;Step2:將ptr節(jié)點next指標(biāo)指向的後一個節(jié)點的previous指標(biāo)指向ptr節(jié)點的前一個節(jié)點。

ptr.next.previous=ptr.previous;3-5-3雙向鏈結(jié)串列內(nèi)節(jié)點的刪除-情況3(圖例)3-6鏈結(jié)串列的應(yīng)用-多項式表示法(開頭節(jié)點串列)開頭節(jié)點的觀念是指在串列的開頭新增一個虛節(jié)點,這個節(jié)點並沒有儲存資料,只是作為串列的第1個節(jié)點,所有環(huán)狀串列的節(jié)點都是中間節(jié)點,換句話說,刪除和插入的操作就只剩下第3-4節(jié)的第二種情況。3-6鏈結(jié)串列的應(yīng)用-多項式表示法(多項式類別與節(jié)點類別)classPNode{//多項式串列節(jié)點類別floatcoef;//係數(shù)intexp;//指數(shù)PNodenext;//指下一個節(jié)點的指標(biāo)//建構(gòu)子publicPNode(floatcoef,intexp){……}};publicclassPolynomial{//多項式鏈結(jié)串列類別publicPNodefirst;//串列的開頭指標(biāo)//建構(gòu)子:建立多項式鏈結(jié)串列publicPolynomial(float[]array){……}//方法:顯示多項式串列publicvoidprintPoly(){……}}3-6鏈結(jié)串列的應(yīng)用-多項式表示法(多項式圖例)使用含開頭節(jié)點的環(huán)狀串列來處理多項式,如下所示:A(X)=7X4+3X2+4B(X)=6X5+5X4+X2+7X+9iTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6MePhTkWnZr$u*x+A2E5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A5H9KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRiUmXp!s&v)zG7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論