C語言-線性表

1線性表基本操作

InitList(*L): 初始化操作,建立一個空的線性表L。
ListEmpty(L): 判斷線性表是否爲空表,若線性表爲空,返回true,否則返回false。
ClearList(*L): 將線性表清空。 GetElem(L,i,*e): 將線性表L中的第i個位置元素值返回給e。
LocateElem(L,e): 在線性表L中查找與給定值e相等的元素,如果查找成功,返回該元素在表中序號表示成功;否則,返回0表示失敗。
ListInsert(*L,i,e): 在線性表L中第i個位置插入新元素e。
ListDelete(*L,i,*e): 刪除線性表L中第i個位置元素,並用e返回其值。
ListLength(L): 返回線性表L的元素個數。

2 順序存儲結構爲何會造成存儲空間的“碎片化”

順序存儲結構的缺點:插入和刪除需要移動大量的對象;存儲設備的碎片化;當線性表過大時,很難確定長度。

3靜態鏈表有什麼優點?適用哪些地方?

靜態鏈表的初始長度一般是固定的,在做插入和刪除操作時,不需要移動元素,僅需要修改指針,故仍具有鏈式存儲結構的主要優點;一般在沒有指針的語言中,靜態鏈表是數組實現鏈表的一種方法

4循環鏈表和雙向鏈表的優點在哪

雙向鏈表由於另外存儲了指向鏈表內容的指針,並且可以會修改相鄰的結點,有時候第一個結點可能會被刪除,或者在之前添加一個新的結點,這時候就要修改指向首個節點的指針。
有一種可以消除這種特殊情況的方法是在最後一個節點之後,第一個結點之前儲存一個永遠不會被刪除或移動的虛擬結點,形成循環鏈表。這個虛擬結點之後的結點是真正的第一個結點,這種情況通常可以用這個虛擬結點直接表示這個鏈表

5鏈式存儲結構有哪些類型

線性存儲結構有順序,連接,索引,散列四種;非線性存儲結構有樹形存儲結構,圖形存儲結構

6順序存儲結構中,數據長度和線性表長度有什麼區別

數組長度是存放線性表的存儲空間的長度,存儲分配後這個量一般是不變的;
線性表的長度是線性表中數據元素的個數,隨着線性表插入和刪除操作的進行,這個量是變化的

7雙向鏈表刪除元素時操作順序能不能反了

只要在改動前把指針成員把指針成員保存在一個臨時變量裏就可以了,隨便先改哪個都無所謂。

8順序存儲結構現在還有那些應用

若線性表需要頻繁查找,很少進行插入和刪除操作時,宜採用順序存儲結構

9 單鏈表

指針域中存儲的信息稱爲指針或鏈。這兩部分信息組成數據元素稱爲存儲映像,或稱爲結點(Node)。n個結點鏈接成一個鏈表,即爲線性表(a1, a2, a3, …, an)的鏈式存儲結構。因爲此鏈表的每個結點中只包含一個指針域,所以叫做單鏈表。

10 什麼是指針域

鏈式存儲結構中,除了要存儲數據元素信息外,還要存儲它的後繼元素的存儲地址(指針)。也就是說除了存儲其本身的信息外,還需存儲一個指示其直接後繼的存儲位置的信息。我們把存儲數據元素信息的域稱爲數據域,把存儲直接後繼位置的域稱爲指針域。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章