經典資料結構系列之 鍊錶的應用

2021-10-04 23:24:53 字數 2049 閱讀 4331

1、前言

資料結構,是計算機程式設計中對資料儲存最基本的操作,不同的資料結構適用不同的業務場景。如今大部分情況都是呼叫開發api封裝好的類庫,直接呼叫,幾乎不需要程式設計師再去深究其中背後實現的邏輯,大大簡化和減低了對程式設計師的要求。正是這種,知其然而不知其所以然,導致很多程式設計師缺乏對於底層結構的了解,分不清楚不同資料結構之間的效能差異,導致出現很多系統效能問題。

2、原理推導

鍊錶的運用,鍊錶是一種特殊的線性表,由一系列的節點組成,節點在鍊錶中的順序由節點元素中包含的物件鏈結順序確定位置。鍊錶中的節點一部分是自身的資料,另一部分為節點指向的下乙個節點的引用。

示例中,第乙個節點包含指向下乙個節點的指標,自身的資料+指標,這樣構成了乙個單向鍊錶中的節點。單向鍊錶在表頭插入和刪除操作效率很高,對於鍊錶來說就是修改指標的引用,時間複雜度為常量o(1)。查詢功能時間複雜度為o(n),比陣列要快,鍊錶操作不需要移動和複製資料。

3、**示例

# 鍊錶資料封裝

/**

* 鍊錶的資料封裝

*/public

class

linknodeflat

public

void

setid

(int id)

public linknodeflat getnodeflat()

public

void

setnodeflat

(linknodeflat nodeflat)

public

linknodeflat

(int id)

public

void

printlink()

system.out.

println

(str);}

}

# 利用單向鍊錶完成節點增刪改查

/**

* 鍊錶的基本實現

*/public

class

singlelinklist

/** * 移除鍊錶中第乙個節點

* @return

*/public linknodeflat removefirst()

/** * 查詢指定節點

* @param id

* @return

*/public linknodeflat find

(int id)

else

}return node;

}/**

* 移除指定的節點

* @param id

* @return

*/public linknodeflat remove

(int id)

else

}// 如果移除的節點就是第乙個節點,則第一節點後的節點成為新的第一節點

if(currentnode.

equals

(firstnode)

)else

return currentnode;

}/**

* 列印鍊錶節點資料

*/public

void

printnodelist()

}public

static

void

main

(string[

] args)

}

4、禪定時刻

單向鍊錶在表頭插入和刪除操作效率很高,對於鍊錶來說就是修改指標的引用,時間複雜度為常量o(1)。查詢功能時間複雜度為o(n),比陣列要快,鍊錶操作不需要移動和複製資料。

作者簡介

思維的持續,乙個真的有思想,不穿格仔襯衫的程式設計師。

資料結構系列之鍊錶

鍊錶是一種線性的資料結構型別,由一系列的節點組成。每個節點由儲存資料的資料域跟指向下乙個節點的指標域構成。鍊錶又有分單向鍊錶,雙向鍊錶,迴圈鍊錶等。單向鍊錶 單向鍊錶的結構示意圖就跟上圖結構一樣,只能單向遍歷,最開始的稱之為頭節點,最後乙個稱之為尾節點。遍歷或者查詢順序只能是從頭節點向尾節點方向依次...

經典資料結構系列之 佇列的應用

1 前言 資料結構,是計算機程式設計中對資料儲存最基本的操作,不同的資料結構適用不同的業務場景。如今大部分情況都是呼叫開發api封裝好的類庫,直接呼叫,幾乎不需要程式設計師再去深究其中背後實現的邏輯,大大簡化和減低了對程式設計師的要求。正是這種,知其然而不知其所以然,導致很多程式設計師缺乏對於底層結...

資料結構 鍊錶應用

鍊錶應用 pragma warning disable 4996 include includetypedef struct data typedef struct nodechainlisttype void chainlistall chainlisttype head 顯示所有節點 chain...