資料結構 鍊錶 單鏈表

2021-08-27 20:42:45 字數 1533 閱讀 3474

陣列作為資料儲存結構有一定缺陷。無序陣列搜尋低效,有序陣列插入低效;無論哪種陣列,刪除低效;大小固定,無法所以改變。但是陣列的優勢是通過下標隨機訪問各個資料。

鍊錶可以取代陣列作為儲存資料的基礎,比如棧,佇列

鍊錶分類:單鏈表、雙端鍊錶、有序鍊錶、雙向鍊錶、有迭代器的鍊錶(迭代器是用來隨機訪問鍊錶元素的一種方法)。

鏈結點:每個資料都包含在「鏈結點」中。乙個鏈結點是link類物件。因為乙個鍊錶中有許多類似的鏈結點,所以有必要用乙個不同於鍊錶的類來表達鏈結點。每個link物件都包含乙個對下乙個鏈結點的引用的字段(通常是next),鍊錶本身的物件有乙個字段指向第乙個鏈結點的引用。

鍊錶不同於陣列的主要特點之一。乙個陣列中,每乙個項占用乙個特定的位置。這個位置可以用乙個下標號直接訪問。在鍊錶中,尋找乙個特定元素的唯一方法就是沿著這個元素的鏈一直向下尋找,不能直接訪問到資料項,必須使用資料之間的關係來定位它。

* 單鏈表

*/class link

public void displaylink() ");

}}/**

* linklist類中只包含乙個資料項:即對鍊錶中第乙個鏈結點的引用,本例中為firstlink。

* 它是唯一的鍊錶需要維護的永久資訊,用以定位所有其他的鏈結點。從firstlink出發,沿著鍊錶通過每個鏈結點的nextlink欄位就可以找他其他的鏈結點。

*/class linklist

public boolean isempty()

//insertfirst方法作用是在煉表表頭插入乙個新鏈結點

public void insertfirst(int id, double dd)

//deletfirst方法是firstlink方法的逆操作,返回刪除的鏈結點

//注意,deletfirst方法假定鍊錶是不空的。。呼叫它之前,先呼叫isempty()方法判斷鍊錶是否為空

public link deletfirst()

//根據所給關鍵值查詢鏈結點,假設是非空鍊錶

public link find(int key)

return current;

}//刪除所給關鍵值的鏈結點

public link delete(int key)

}if (current == firstlink) else

return current;

}public void displaylist()

}} public static void main(string args)

}

資料結構 鍊錶(單鏈表)

頭指標與頭結點不同,頭結點即第乙個結點,頭指標是指向第乙個結點的指標。鍊錶中可以沒有頭結點,但不能沒有頭指標。include using namespace std struct node node int d class list void insert int d void print node...

資料結構 鍊錶,單鏈表篇

概述 線性表的鏈式儲存結構稱為鍊錶,其中每個節點不僅包含元素本身資訊,而且包含標識元素之間的邏輯關係的資訊,在c c 中常用指標來實現,這稱為指標域。順序表中邏輯上相鄰元素對應的儲存位置也相鄰,所以執行插入刪除操作時候平均需要移動半個表的元素,而鍊錶不同,邏輯上相鄰元素對應的儲存位置不一定相鄰,它是...

資料結構和演算法 鍊錶 單鏈表

線性表的鏈式儲存即形成鍊錶。在鏈式儲存結構中,每個儲存結點不僅包含所存元素本身的資訊即資料域,還包含元素之間的邏輯關係,即前驅結點包含有後繼結點的位址信 息,這就是指標域.從而提高資料的查詢速度。頭結點的引入是為了插入和刪除的方便。通過頭結點指標唯一標識乙個鍊錶。單鏈表 形式如下 linklist型...