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

主站蜘蛛池模板: 精品国产黑色丝袜高跟鞋| 亚洲精品免费网站| 成人看片欧美一区二区| 国产成人精品综合| 香蕉精品在线| 久久精品中文字幕少妇| 国产精品香蕉| jizz亚洲高清在线观看| 成人免费视频一区| 一级全黄毛片| 国产精品视频公开费视频| 久草中文网| 亚洲视屏在线观看| 成人日韩视频| …亚洲 欧洲 另类 春色| 999精品视频在线| 手机在线免费毛片| 欧美精品亚洲精品日韩专区va| 国产情侣一区二区三区| 欧美日一级片| 人妖无码第一页| 最新加勒比隔壁人妻| 日韩av资源在线| 日韩性网站| 亚洲日韩每日更新| 亚洲人成日本在线观看| 久久亚洲国产最新网站| 久久综合五月| 国产一级毛片高清完整视频版| 亚洲人成在线精品| 99无码中文字幕视频| 亚洲va欧美va国产综合下载| 欧美精品三级在线| 任我操在线视频| 亚洲国产日韩在线观看| 操操操综合网| 国产男女免费视频| 99在线视频网站| 精品久久国产综合精麻豆| 久久免费看片| 午夜福利免费视频| 久久综合九九亚洲一区| 黄色网页在线观看| 久久青草免费91观看| 欧美成人国产| 亚洲色图在线观看| 国产色图在线观看| 国产成人综合日韩精品无码首页| 久久久久人妻一区精品色奶水| 中文字幕 欧美日韩| 精品欧美一区二区三区在线| www精品久久| 免费a级毛片18以上观看精品| 国产欧美亚洲精品第3页在线| 精品91在线| 亚洲国产黄色| 亚洲成a人在线观看| 亚洲狼网站狼狼鲁亚洲下载| 国产一区二区三区夜色| 免费高清毛片| 国内精品手机在线观看视频| 香蕉蕉亚亚洲aav综合| 野花国产精品入口| 亚洲永久视频| 亚洲第一网站男人都懂| 免费无码一区二区| 国产原创演绎剧情有字幕的| 欧美日本在线一区二区三区| 老熟妇喷水一区二区三区| 免费xxxxx在线观看网站| 亚洲大学生视频在线播放| 国产精品免费入口视频| 五月天丁香婷婷综合久久| 日本在线欧美在线| 欧美成人午夜影院| 免费看美女毛片| 亚洲三级a| 在线国产毛片| 在线免费亚洲无码视频| 精品三级网站| 在线观看欧美精品二区| 久久婷婷五月综合97色|