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).

主站蜘蛛池模板: 亚洲人成色77777在线观看| 色九九视频| 免费a在线观看播放| 日本黄色不卡视频| 网友自拍视频精品区| 国产v精品成人免费视频71pao| 久久精品无码一区二区国产区| 久久一本日韩精品中文字幕屁孩| a国产精品| 五月综合色婷婷| 青青草国产免费国产| 婷五月综合| 福利国产在线| 久久精品娱乐亚洲领先| 欧洲av毛片| 97综合久久| 国产日韩欧美视频| 最新国语自产精品视频在| 高清无码一本到东京热| 欧美狠狠干| 久久一级电影| 国产性生交xxxxx免费| 一级片一区| 午夜高清国产拍精品| 国产精品爆乳99久久| 久久99精品久久久久久不卡| 亚洲码在线中文在线观看| 日韩无码视频播放| 亚洲精品老司机| 久久青草免费91观看| 波多野结衣中文字幕一区| 国产噜噜在线视频观看| 欧美综合中文字幕久久| 国产亚洲欧美日韩在线一区| 成年人福利视频| 久久国产亚洲偷自| 色婷婷天天综合在线| 久久国产拍爱| 欧美日韩国产综合视频在线观看| h网站在线播放| 国产97视频在线| 人人妻人人澡人人爽欧美一区 | 视频在线观看一区二区| 国产精品xxx| 99精品影院| 在线观看免费人成视频色快速| 国产特级毛片| 青青草国产在线视频| 亚洲综合18p| 9966国产精品视频| 91亚洲影院| 亚洲最猛黑人xxxx黑人猛交| 久青草免费视频| 99在线免费播放| 成人免费午间影院在线观看| 四虎精品国产AV二区| 全部毛片免费看| 91久久国产综合精品| 国产麻豆精品在线观看| 另类专区亚洲| 四虎精品国产AV二区| 在线观看无码a∨| 国内精品久久人妻无码大片高| 永久免费精品视频| 国产精品手机视频一区二区| 亚洲精品欧美日本中文字幕| 国产欧美日韩va| 精品久久777| 97视频精品全国在线观看| 日韩少妇激情一区二区| 国产在线观看第二页| 亚洲色图欧美视频| 激情六月丁香婷婷四房播| 亚欧美国产综合| 午夜视频www| 666精品国产精品亚洲| a网站在线观看| 欧美激情成人网| 国产H片无码不卡在线视频| 亚洲最大看欧美片网站地址| 亚洲国产天堂久久综合| 日韩成人在线网站|