由於順序表再插入或者刪除時需要移動大量資料,並且如果表比較大, 會比較難分配連續的儲存空間導致儲存資料失敗。因此可以採用鍊錶結構,鍊錶結構是一種動態儲存分配的結構形式,可以根據需要動態的申請所需的儲存單元。
鍊錶又分為單鏈表,雙向鍊錶,以及單迴圈鍊錶,多重鏈的迴圈鍊錶。本文先介紹單鏈表。
典型的單鏈表結構如圖所示:
鍊錶每個結點都應包括如下內容:
鍊錶的結構是有許多個這樣的節點構成。在進行單鏈表操作時,首先需要訂乙個「頭引用」變數,一般以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...
資料結構之單鏈表
眾所周知,線性表是資料結構中的一種基本的資料結構。線性表的實現基本的有兩種 一種是順序儲存方式,另一種是鏈式儲存方式。順序儲存的線性表又叫順序表,實現時一般利用陣列等在記憶體中連續儲存的這個資料型別,所以順序表是一種隨機訪問的資料結構。順序表的優點是 可以快速訪問任一 位置的元素 並且無需為表示元素...