資料結構之單鏈表

2021-07-29 21:27:39 字數 2717 閱讀 7099

由於順序表再插入或者刪除時需要移動大量資料,並且如果表比較大, 會比較難分配連續的儲存空間導致儲存資料失敗。因此可以採用鍊錶結構,鍊錶結構是一種動態儲存分配的結構形式,可以根據需要動態的申請所需的儲存單元。

鍊錶又分為單鏈表,雙向鍊錶,以及單迴圈鍊錶,多重鏈的迴圈鍊錶。本文先介紹單鏈表。

典型的單鏈表結構如圖所示:

鍊錶每個結點都應包括如下內容:

鍊錶的結構是有許多個這樣的節點構成。在進行單鏈表操作時,首先需要訂乙個「頭引用」變數,一般以head表示,該引用變數指向鍊錶的結構的第乙個結點,第乙個結點的位址部分指向第二個結點。。知道最後乙個結點,最後乙個結點不指向其他結點,稱為表尾。一般表尾的位址部分放乙個空位址null,單鏈表到此結束。整個儲存過程十分;類似於一條長鏈,火車,而結點就是火車廂。所以稱之為單鏈表,或者鏈式結構。

由於採用了引用來指向下乙個資料的位址,因此在鍊錶結構中,邏輯上相鄰的結點在記憶體中並不一定相鄰,邏輯相鄰關係通過位址部分的引用變數來實現。

鍊錶結構帶來的最大的好處就是結點之間不需要連續存放,因此儲存大量資料時不需要分配連續的儲存空間。可以使用new函式動態分配結點的儲存空間,刪除結點時,將該結點賦值為null,釋放其占有的記憶體空間。

而鍊錶的缺點就是浪費儲存空間。

鍊錶的訪問只能從表頭逐個查詢,即通過表頭head引用,移動指標,從第乙個結點一直找到最後乙個結點或者需要的結點為止。不像順序表或者陣列通過下標那樣隨機訪問。

以下設計鍊錶的資料儲存操作:

1、結點資料:

/**

* 鍊錶節點,相當於火車的車廂

*@author administrator

* */

public

class

mynode

public

void

display()

}

鍊錶類:

/**

* 鍊錶,相當於火車

*@author administrator

* */

public

class

mylinklist

2、追加結點

表尾結點的位址部分原來儲存的是null,此時需要將其設定為新增結點的位址,然後將新增結點的位址部分設定為null,使其成為表尾。

/**

* 在尾結點後追加結點

*@param value

*/public

void

insertend(long value)else

ntemp.next=node;}}

3、插入頭結點

新增結點即為頭結點。

/**

* 在頭結點後插入節點

*@param value

*/public

void

insetfirst(long value)else

}

4、查詢結點

根據關鍵字查詢結點。

/**

* 查詢方法

*@param value

*@return

*/public mynode find(long value)

currnode=currnode.next;

}return

null;

}

5、插入結點

在鍊錶的中間某乙個指定的位置插入乙個結點

/**

* 根據關鍵字key,在其中間插入乙個結點value

*@param value

*@param key

*/public

void

insertfindbykey(long value,long key)else

}

6、刪除結點

(1)分為刪除頭結點後的結點,即第乙個結點:

/**

* 刪除頭結點後的節點

*@return

*/public mynode deletefirst()

(2)刪除第乙個結點後的結點

/**

* 刪除

*@param value

*@return

*/public mynode delete(long value)

previous=currnode;

currnode=currnode.next;

}if (currnode==first) else

return currnode;

}

7、計算鍊錶長度:

/**

* 計算鍊錶長度,即結點個數

*@return

*/public

intgetlinklength()

return length;

}

8、顯示所有結點

/**

* 顯示結點

*/public

void

display()

}

資料結構之單鏈表

date 08 07 06 descript 單鏈表的實現與應用 public class linlist public node gethead 定位函式 public void index int i throws exception if i 1 current head.next int j...

資料結構之單鏈表

鍊錶 儲存結構的一種,包含兩個部分,資料域和指標域,相對於順序儲存結構來說,插入和刪除的演算法時間複雜度只為o 1 定義 定義 typedef struct node linklist linklist,指標指向每乙個元素 typedef struct nodenode 以下為簡單的c語言實現 in...

資料結構之單鏈表

眾所周知,線性表是資料結構中的一種基本的資料結構。線性表的實現基本的有兩種 一種是順序儲存方式,另一種是鏈式儲存方式。順序儲存的線性表又叫順序表,實現時一般利用陣列等在記憶體中連續儲存的這個資料型別,所以順序表是一種隨機訪問的資料結構。順序表的優點是 可以快速訪問任一 位置的元素 並且無需為表示元素...