999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

順序表和鏈式表存儲結構研究

2013-08-22 06:29:00梁少剛
科技視界 2013年12期

梁少剛

(寶雞職業技術學院,陜西 寶雞721000)

1 線性表的概述

線性表(Linear list)是最簡單且最常用的一種數據結構。這種結構具有下列特點:存在一個唯一的沒有前驅的(頭)數據元素;存在一個唯一的沒有后繼的(尾)數據元素;此外,每一個數據元素均有一個直接前驅和一個直接后繼數據元素。

1.1 線性表的邏輯結構

線性表是有限元素(a1,a2,a3,…,an)有序序列的集合,a1,a2,…,an都是完全相同結構的數據類型,同時它們之間的排列嚴格有序,其中任何元素都對應唯一的前驅以及唯一的后繼。這樣一個序列可以有查詢、刪除、插入隊列任何位置的數據操作。

1.2 線性表的物理結構

順序線性表是用一定大小的數據來存放線性表,數組長度代表線性表的長度,元素在數組的位置代表元素在線性表的位置。但對數組中元素不能跳躍插入,因為線性表中元素是順序且連接著的,不像數組中間可以空元素。同時刪除元素時,必須大量移動剩下的元素,因為必須實現其連續性。插入元素同樣需要大量移動數據。因此這樣存儲的運行效率并不夠高。所以對于有著頻繁插入和刪除運算的線性表,是不適合采用順序存儲的。

鏈式線性表是通過動態分配,分配物理上不一定相鄰的存儲單元。為表示他們的連續性連接性,再在分配這個存儲單元時,附加一部分存儲單元———指針域來指出這個元素的后繼元素的存儲地址。鏈式存儲結構又分為單鏈表、循環鏈表和雙向鏈表等。這樣的鏈式存儲多節省了操作的時間,但需要更多的存儲空間。

2 順序線性表

2.1 順序表及其存儲結構

用一組地址連續的存儲單元依次存放線性表里的數據元素。用這種方法存儲的線性表簡稱順序表。

線性表的起始地址稱作線性表的地址,以存儲位置相鄰來表示有序對〈ai-1,ai〉即線性表中第i個數據元素的存儲位置LOC(ai)和第i-1個數據元素的存儲位置LOC(ai-1)之間滿足下列關系:

LOC(ai)=LOC(ai-1)+L(一個數據元素所占的存儲位置)

所有數據元素的存儲位置均取決于第一個數據元素的存儲位置:順序表的類型定義如下:

2.2 順序表的基本運算

2.2.1 插入算法

1)不用查找插入位置i,只需要判斷i的合法位置,其范圍是1≤i≤L.length+1,否則不合法;

2)判斷線性表是否滿,若L.length≥L.listsize說明線性表滿了,不能進行插入數據元素操作,要增加存儲空間的分量或者做出錯處理;

3)將線性表的最后一個數據元素到第i-1個數據元素依次往后移動一個數據單元,空出第i-1個位置的數據單元;

4)把新的數據元素插入到剛才空出來的數據單元中;5)線性表長度增加 1。

2.2.2 刪除算法

1)不用查找刪除位置i,也不用另外判斷線性表是否為空,只要 i取值為1≤i≤L.length就包括了線性表判空操作和刪除位置i的合法性判斷了,否則不合法。

2)將線性表的第i個數據元素到最后一個數據元素依次往前移動一個數據單元,就算刪除了第i個數據元素。

3)線性表長度減 1。

2.2.3 查找算法

1)順序查找算法對數據元素有序、無序沒有要求,只要把給定的關鍵字與線性表中的數據元素逐個進行比較,若相等查找就成功,若找遍整個線性表中的數據元素都沒有找到與關鍵字相等的數據元素,則查找失敗。

2)折半查找是要求順序存儲和存儲的數據元素有序,查找時把給定的關鍵字與表中的中間位置元素進行比較,若相等就查找成功,若關鍵字比中間位置大,則下次在右半部分查找,若比中間位置上的數據元素小,則下次在左半部分查找,依次重復,直到找完查找區間的所有數據元素也沒有找到與關鍵字相等的數據元素存在,則查找失敗。

3)索引查找是把順序表中的數據元素等分成相等的幾部分,使后一個子表的所有數據元素均大于前一個子表的最大數據元素,并用每一個子表的最大關鍵字建立索引表。進行查找時,將給定關鍵字先與索引表中的關鍵字進行比較,確定此關鍵字屬于哪一個子表,再在這個子表上進行查找。

4)哈希查找是關鍵字與哈希函數存在某種對應關系,只要通過哈希函數就能直接確定數據元素在哈希表中的對應位置。如果數據元素沒有沖突,不用查找就能找到關鍵字;如果存在沖突,就利用解決沖突的辦法來查找這個關鍵字。

3 鏈式線性表

3.1 單鏈表及其存儲結構

線性表最簡單的鏈式存儲形式稱為單鏈表或線性鏈表,鏈表中每個結點僅含一個數據域和一個指針域,可描述為:

其中ElemType可根據需要用int,char等類型來代替;當然這里的數據域也可以是一個記錄(如學生記錄)。在這里我們使用帶頭結點的單鏈表。

3.2 鏈表的基本運算

3.2.1 插入算法

1)鏈式存儲的線性表做插入操作,不判斷線性表是否滿,但是要從頭指針開始,通過循環語句循環查找第i-1個結點。

2)判斷i的合法性,i的合法范圍是1≤i≤n,否則就是不合法。

3)申請一個結點的存儲空間,并用一個指針變量指向這個結點,把需要插入的數據元素值賦給這個結點的數據域中。

4)修改插入數據元素的指針,完成插入操作。

3.2.2 刪除算法

1)鏈式存儲的線性表做刪除操作前,要從頭指針開始,通過循環語句循環查找需要刪除的第i個結點。

2)判斷第i個結點的合法性,i的合法范圍是1≤i≤n,否則不合法。

3)修改刪除數據元素的指針,完成刪除操作。

4)釋放刪除結點的存儲空間。

3.2.3 查找算法

1)單鏈表。只能從頭指針開始,一個結點接著一個結點地順序查找,不能找結點前驅,只能找結點后繼結點。

2)循環鏈表。可以從頭指針開始,也可以從尾指針開始順序地查找結點的后繼元素。

3)雙向鏈表。從頭指針開始順序查找結點,既可以查找結點的前驅元素,也可以查找結點的后繼元素。

4)對比分析

順序表的優點:實現方法簡單。一維數組在內存中占用的空間就是一組連續的存儲區域,因此,用一維數組來表示順序表的數據存儲是最合適的。其次,順序表中元素間的物理位置關系正好反映了線性表元素間的邏輯關系,因此,不需要增加額外的存儲開銷。另外順序表還具有按元素序號隨機訪問的特點,只要知道順序表的首地址和每個數據元素所占存儲單元的個數,就可以求出第 i個數據元素的存儲地址。

順序表的缺點:由數組來實現時,數組下標所標出的必須是定量,但是實際問題中,線性表中的元素個數是不固定的,線性表中的元素用順序表實現時,必須預先分配足夠大的存儲空間,存儲空間估計過大,可能導致順序表后部空間大量閑置,浪費存儲空間;預留分配過小,又會造成溢出。而且在順序表中做插入和刪除操作時,由于順序表中元素的物理位置必須相鄰,因此需要平均移動大約表中一半的元素,那么當順序表中的元素較多時,順序表的運行效率就會很低。

單鏈表的優點:是一種動態的存儲結構,鏈表中每個結點占用的存儲空間不是預先分配的,而是系統運行時根據需求生成的,只要內存有足夠的空間,就可以存儲任意長度的線性表,一般不會產生溢出。單鏈表不需要用地址連續的存儲單元來實現,因為它不要求邏輯上相鄰的兩個數據元素物理上也相鄰,在單鏈表中做插入和刪除操作時,由于元素間的物理位置關系是由指針實現的,因此只需要改變指針就可以了,不需要移動大量的數據元素,大大提高了運行效率。

單鏈表的缺點:需要對每個元素設置一個指針域,用來存儲指示其直接后繼的信息,這就增加了存儲開銷。而且,單鏈表不具有按序號隨機訪問的特點,訪問任意一個元素時都需要從表頭開始依次查找,訪問效率較低。

[1]嚴蔚敏,吳偉民.數據結構:C 語言版[M].北京:清華大學出版社,1997.

[2]李春葆.數據結構教程[M].2 版.北京:清華大學出版社,2007.

[3]從艷,任益夫,劉向玲.線性表不同存儲結構的比較與應用[J].電腦知識與技術,2007(08).

主站蜘蛛池模板: 亚洲无码视频一区二区三区 | 久草美女视频| 青青草国产精品久久久久| 思思热在线视频精品| 一级毛片免费观看久| 91精品专区国产盗摄| 国产精品女主播| 在线播放国产99re| 亚洲国产成人精品青青草原| 国产福利不卡视频| 无码粉嫩虎白一线天在线观看| 欧美日韩午夜| 国产精品亚洲欧美日韩久久| 国产欧美在线| 亚洲一区二区成人| 99福利视频导航| 精品无码一区二区三区电影| 午夜国产精品视频| 色哟哟国产精品一区二区| 欧美无专区| 精品人妻一区无码视频| 亚洲人视频在线观看| 99在线免费播放| 久久久亚洲国产美女国产盗摄| 国产一级片网址| 亚洲福利一区二区三区| 精品国产美女福到在线不卡f| 91黄色在线观看| 国产精品无码一二三视频| 国产区成人精品视频| 亚洲人精品亚洲人成在线| 99久视频| 亚洲浓毛av| 小说 亚洲 无码 精品| 免费观看精品视频999| 99热精品久久| 久久性妇女精品免费| 91精品人妻一区二区| 在线欧美a| 亚洲精品手机在线| 国产乱人伦偷精品视频AAA| 黄色片中文字幕| 色窝窝免费一区二区三区| 四虎精品黑人视频| 久久久国产精品免费视频| 欧美日韩精品一区二区在线线| 一级毛片基地| 欧美不卡视频一区发布| 狼友视频国产精品首页| 午夜三级在线| 四虎影视无码永久免费观看| 色哟哟精品无码网站在线播放视频| 精品丝袜美腿国产一区| 免费AV在线播放观看18禁强制| 区国产精品搜索视频| 91毛片网| 久久久久久久久18禁秘| 欧美黄色a| 成人av专区精品无码国产| 亚洲天堂伊人| 国产人成网线在线播放va| 91在线丝袜| 欧美精品成人一区二区在线观看| 国产欧美日韩综合在线第一| 国产小视频免费| 国产亚洲视频播放9000| 久久99精品久久久久纯品| 欧美亚洲国产精品久久蜜芽| 激情综合网址| 波多野结衣无码AV在线| 91免费国产高清观看| 亚洲视频在线观看免费视频| 99无码中文字幕视频| 亚洲精品视频在线观看视频| 亚洲一区二区无码视频| 成人年鲁鲁在线观看视频| 久久伊伊香蕉综合精品| 免费一级毛片在线观看| 2048国产精品原创综合在线| 国产综合在线观看视频| 日韩国产欧美精品在线| 久久窝窝国产精品午夜看片|