資料結構小總結

2021-10-05 21:39:14 字數 1851 閱讀 1421

線性表是一種典型的線性結構。頭結點無前驅有乙個後繼,尾節點無後繼有乙個前驅。鍊錶只能順序查詢,定位乙個元素的時間為o(n),刪除乙個元素的時間為o(1)

線性表的順序儲存結構:把線性表的結點按邏輯順序依次存放在一組位址連續的儲存單元裡。用這種方法儲存的線性表簡稱順序表。是一種隨機訪問的儲存結構。順序儲存指記憶體位址是一塊的,隨機訪問指訪問時可以按下標隨機訪問,儲存和訪問是不一樣的。如果是儲存,則是指按順序的,如果是訪問,則是可以隨機的,可以利用元素下標進行。陣列比線性表速度更快的是:原地逆序、返回中間節點、選擇隨機節點便於線性表的構造和任意元素的訪問。

插入:插入新結點,之後結點後移。平均時間複雜度:o(n)

刪除:刪除節點,之後結點前移。平均時間複雜度:o(n)

線性鍊錶:用一組任意的儲存單元來依次存放線性表的結點,這組儲存單元即可以是連續的,也可以是不連續的,甚至是零散分布在記憶體中的任意位置上的。因此,鍊錶中結點的邏輯次序和物理次序不一定相同。為了能正確表示結點間的邏輯關係,在儲存每個結點值的同時,還必須儲存指示其後繼結點的位址。data域是資料域,用來存放結點的值。next是指標域(亦稱鏈域),用來存放結點的直接後繼的位址(或位置)。不需要事先估計儲存空間大小。

單鏈表中每個結點的儲存位址是存放在其前趨結點next域中,而開始結點無前趨,故應設頭指標head指向開始結點。同時,由於最後乙個結點無後繼,故結點的指標域為空,即null。頭插法建表(逆序)、尾插法建表(順序)。增加頭結點的目的是演算法實現上的方便,但增大了記憶體開銷。

查詢:只能從鍊錶的頭指標出發,順鏈域next逐個結點往下搜尋,直到搜尋到第i個結點為止。因此,鍊錶不是隨機訪問結構。

插入:先找到表的第i-1的儲存位置,然後插入。新結點先連後繼,再連前驅。

刪除:首先找到ai-1的儲存位置p。然後令p–>next指向ai的直接後繼結點,即把ai從鏈上摘下。最後釋放結點ai的空間.r=p->next;p->next=r->next;delete r。

判斷乙個單向鍊錶中是否存在環的最佳方法是快慢指標。

靜態鍊錶:用一維陣列來實現線性鍊錶,這種用一維陣列表示的線性鍊錶,稱為靜態鍊錶。靜態:體現在表的容量是一定的。(陣列的大小);鍊錶:插入與刪除同前面所述的動態鍊錶方法相同。靜態鍊錶中指標表示的是下一元素在陣列中的位置。

靜態鍊錶是用陣列實現的,是順序的儲存結構,在實體地址上是連續的,而且需要預先分配大小。動態鍊錶是用申請記憶體函式(c是malloc,c++是new)動態申請記憶體的,所以在鍊錶的長度上沒有限制。動態鍊錶因為是動態申請記憶體的,所以每個節點的實體地址不連續,要通過指標來順序訪問。靜態鍊錶在插入、刪除時也是通過修改指標域來實現的,與動態鍊錶沒有什麼分別

迴圈鍊錶:是一種頭尾相接的鍊錶。其特點是無須增加儲存量,僅對錶的鏈結方式稍作改變,即可使得表處理更加方便靈活。

在單鏈表中,將終端結點的指標域null改為指向表頭結點的或開始結點,就得到了單鏈形式的迴圈鍊錶,並簡單稱為單迴圈鍊錶。由於迴圈鍊錶中沒有null指標,故涉及遍歷操作時,其終止條件就不再像非迴圈鍊錶那樣判斷p或p—>next是否為空,而是判斷它們是否等於某一指定指標,如頭指標或尾指標等。

雙向鍊錶:在單鏈表的每個結點裡再增加乙個指向其直接前趨的指標域prior。這樣就形成的鍊錶中有兩個方向不同的鏈。雙鏈表一般由頭指標唯一確定的,將頭結點和尾結點鏈結起來構成迴圈鍊錶,並稱之為雙向鍊錶。設指標p指向某一結點,則雙向鍊錶結構的對稱性可用下式描述:p—>prior—>next=p=p—>next—>prior。從兩個方向搜尋雙鏈表,比從乙個方向搜尋雙鏈表的方差要小。

插入:先搞定插入節點的前驅和後繼,再搞定後結點的前驅,最後搞定前結點的後繼。

在有序雙向鍊錶中定位刪除乙個元素的平均時間複雜度為o(n)

可以直接刪除當前指標所指向的節點。而不需要像單向鍊錶中,刪除乙個元素必須找到其前驅。因此在插入資料時,單向鍊錶和雙向鍊錶操作複雜度相同,而刪除資料時,雙向鍊錶的效能優於單向鍊錶

順序性資料結構小總結

第一題 problem a 崗位實踐2 順序表的插入 順序表是採用陣列儲存資料的一種線性資料結構。實現順序表的插入操作,即給出指定位置和資料,把該位置和後面的資料往後移動1位,然後再插入資料。假定順序表的位置從1開始計算。include using namespace std define l 50...

常見的資料結構小總結

幾種常見的資料結構 1 線性資料結構 元素之間一般存在元素之間存在一對一關係,是最常用的一類資料結構,典型的有 陣列 棧 佇列和線性表 2 樹形結構 結點間具有層次關係,每一層的乙個結點能且只能和上一層的乙個結點相關,但同時可以和下一層的多個結點相關,稱為 一對多 關係,常見型別有 樹 堆 3 圖形...

資料結構與演算法小總結

最近學過了結構與演算法,來總結一些!資料結構定義 資料結構是一種儲存和組織資料得方式,資料結構有著資料的邏輯結構 資料的儲存結構以及資料的運算等!資料的邏輯結構 通過集合 線性結構 樹形結構 圖形結構這幾種關係結構來反映資料元素之間的關係。資料的運算 對資料附加的操作,通過對資料依某種模式而建立起來...