资源描述:
《资料结构与演算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、資料結構與演算法課程教學投影片第九章–鏈結串列本章各段大綱9-1鏈結串列概觀9-2單一鏈結串列以陣列表示9-3雙向鏈結串列以陣列表示9-4鏈結串列用指標和結構來表示9-5鏈結串列應用在其它結構9-1鏈結串列概觀串列的定義:串列(list)的抽象觀念是指一組相同資料型態元素的有序集合。例子如下正奇數串列(1,3,5,7,9,……)。正偶數串列(2,4,6,8,10,……)。費伯那西數串列(1,1,2,3,5,8,……)。正質數串列(2,3,5,7,11,13,……)。大寫英文字母串列(A,B,C,D,……,X,Y,Z)。9-1鏈結串列概觀串列的應用因為串列中的
2、元素是有次序的,一般串列中元素的排列次序是由小而大,例如正整數串列的1<2<3<4有序的串列應用到電腦中的情況則有ASCⅡ碼,如A
3、種有順序的串列,且資料項應包含鏈結(link),可以鏈結到其它資料。此資料項稱為節點節點形式datalink(1)樂透獎號碼的開獎順序(2)由小到大順著鏈結的順序則為322624951195113226249-1鏈結串列概觀鏈結串列有以下的特性:鏈結串列一般可以用陣列結構型式來表示。節點順序在記憶體中的實際位址可以不連續,或者是經由隨機配置,不像陣列的元素在記憶體中的實際位址是連續的。依鏈結的型式不同,鏈結串列分為下列幾類:單向鏈結:節點之間按順序,一個鏈結一個。最後沒有鏈結者,其link值為Null或特定值。環狀鏈結:同單向鏈結的型式,但是最後一個節點指向
4、第1個節點。雙向鏈結:節點包含資料和左右兩個鏈結。樹狀鏈結:鏈結的型式如樹狀結構。圖形鏈結:鏈結的型式如圖形結構。9-1鏈結串列概觀單向鏈結節點之間按順序,一個鏈結一個。最後沒有鏈結者,其link值為Null或特定值。9-1鏈結串列概觀環狀鏈結同單向鏈結的型式,但是最後一個節點指向第1個節點。9-1鏈結串列概觀雙向鏈結節點包含資料和左右兩個鏈結。9-1鏈結串列概觀樹狀鏈結鏈結的型式如樹狀結構。9-1鏈結串列概觀圖形鏈結鏈結的型式如圖形結構。9-1鏈結串列概觀鏈結串列的應用:其特性是因為加入鏈結(link)使得資料可以串起來,使其有次序性,而形成其他結構的應用
5、,以求得更佳的演算法加速排序速度假如用陣列存放數值資料,且依大小排序,刪除、增加、修改資料,且需要重新排序,例如原有資料量n個,則由第6章排序方法得知排序演算法的時間是O(nlogn)或是O(n2),而且都是針對固定的資料來排序。但如果用鏈結串列結構來處理,則資料異動的時間只在有限次數內,時間是O(1),如果加上搜尋到資料再異動時,搜尋的最差時間是O(n),所以總共的異動時間為O(mn),這比O(mn2)或O(mnlogn)有效率堆疊、佇列可以利用鏈結串列來表示其結構。只要資料異動頻繁且要維持其定義的次序性,都適合用鏈結串列。9-2單一鏈結串列以陣列表示鏈結
6、陣列的宣告方式如下#definemaxsize100;intA[2][maxsize];//第一列存放資料,第二列存放鏈結inthead;另外需要一個獨立的變數來存放一個陣列的起始點-1代表空鏈結datalinkA01230205040103020504010433020504010302050401001241-132-13243原資料以鏈結排序,不需調動順序,可以加快速度鏈結陣列課本有誤以鏈結建立排序9-2單一鏈結串列以陣列表示鏈結陣列的主要操作:尋找節點目的:找出陣列中比搜尋數值小的最後一個位置傳回該值所在位置的索引值演算法說明圖範例:Data=35,
7、要找比data小的最後1個位置301130550420-13240601001130550420-132406010012456head=09-2單一鏈結串列以陣列表示鏈結陣列的主要操作:尋找節點演算法說明圖301130550420-13240601001130550420-132406010012456範例:Data=35,要找比data小的最後1個位置A[0][0]=108、[1][2]=4,ans=2(3)link=4A[0