演算法精解二十五(C語言版)

2021-06-28 21:21:44 字數 1679 閱讀 7070

雙向鍊錶介面的定義

描述初始化有引數list所指定的雙向鍊錶。該函式必須在雙向鍊錶做其他任何操作之前呼叫。當呼叫dist_destroy時,這裡傳入的destroy引數提供了一種釋放動態分配空間的方法。它的工作方式同前面敘述的list_destroy.對於雙向鍊錶,如果其中包含不需要手動釋放空間的資料,destory引數應該設定為null.

描 述銷毀有引數list做指定的雙向鍊錶。呼叫該函式後不允許在執行其他操作,除非使用者再次呼叫dlist_init.dlist_destroy函式將移除雙向鍊錶中的所有元素,如果傳給dlist_init的引數destroy不為null,則呼叫destory所指定的函式,對鍊錶中每個移除的元素 時間施行資源**操作。

描  述將元素插入由list指定的雙向鍊錶中element元素之後。當插入空煉表中時,element可能指向任何位置,為了避免混淆,element此時應該設定null.新的元素包含乙個指向 data的指標,因此只要該元素仍在鍊錶中,data所引用的記憶體空間就應該保持合法。有呼叫者負責管理data所引用的儲存空間。

描 述將元素插入有list指定的雙向鍊錶中element元素之前。當插入空煉表中時,element可能指向任何位置,為了避免混淆,element此時應該設定null。新的元素包含乙個指向data的指標,因此只要該元素仍在鍊錶中時,data所應用的記憶體空間就應該保持合法。有呼叫者負責管理data所引用的儲存空間。

描  述從由list指定的雙向鍊錶中移除有element所指定的元素。函式返回後,引數 data將指向已移除元素中儲存的資料域。有呼叫者負責管理data所引用的儲存空間。

描 述這是乙個巨集,用來計算由引數list所指定的雙向鍊錶中的元素個數。

返回值返回鍊錶的頭元素。

描  述這是乙個巨集,用來返回有引數list所指定的雙向鍊錶中的頭元素。

演算法精解二十(C語言版)

資料結構 鍊錶 鍊錶可以數是一種最為基礎的資料結構,鍊錶有一組元素以一種特定的順序組合或鏈結在一起,在維護資料的集合時很有用。這一點同我們常用到的陣列很相似。然而,鍊錶在很多情況下比陣列更有優勢。特別是在執行插入和刪除操作時鍊錶擁有更高的效率。鍊錶需要動態地開闢儲存空間,也就是儲存空間是在程式執行時...

演算法精解二十二(C語言版)

單鏈表的實現與分析 回顧一下鍊錶元素的組成 乙個資料成員和乙個指向鍊錶中下乙個元素的指標。結構 體listelmt表示鍊錶中的單個元素 見例項5 1 如你所料,這個結構體擁有兩個成員,就是前面介紹的資料成員和指標成員。結構體系list則表示鍊錶這種資料結構 見例項5 1 這個結構體由5個成員組成 s...

演算法精解二十七(C語言版)

迴圈鍊錶的介紹 迴圈鍊錶是另一種形式的鍊錶,它提供了更為靈活的遍歷鍊錶元素的能力。迴圈鍊錶可以單向的或雙向的,單區分乙個鍊錶是不是迴圈鍊錶只要看它有沒有尾部元素即可。在迴圈鍊錶中,最後乙個元素的next指標又回頭元素而不是設定為null。在雙向迴圈鍊錶中,頭元素的prev指標則指向最後乙個元素,這使...