資料結構 單鏈表的java實現

2021-08-19 05:26:09 字數 4415 閱讀 7128

單向鍊錶是一種線性表,實際上是由節點(node)組成的,乙個鍊錶擁有不定數量的節點。其資料在記憶體中儲存是不連續的,它儲存的資料分散在記憶體中,每個結點只能也只有它能知道下乙個結點的儲存位置。由n各節點(node)組成單向鍊錶,每乙個node記錄本node的資料及下乙個node。向外暴露的只有乙個頭節點(head),我們對鍊錶的所有操作,都是直接或者間接地通過其頭節點來進行的。

import lianbiao.mylink.node;

public

class

singlelist

public

node(int data)

public

intgetdata()

public

void

setdata(int data)

public node getnext()

public

void

setnext(node next)

}//對頭結點的初始化,如果不初始化,將會空指標異常,無法進行以下node temp=head; temp.next的操作

public node head = new node(2);

//count用來統計鍊錶的長度

public

int count;

public

singlelist(){}

/*** 統計鍊錶中結點的個數

*@return

*/public

intsize()

/*** 判斷鍊錶是否為空

*@return

*/public

boolean

isempty()

/*** 增加乙個結點

*@param node

* 在鍊錶的最後插入新的結點

* 將原本最後乙個結點的next指向新結點

*/public

void

addnode(node node)

//temp為最後乙個結點,將其next指向新結點

temp.next=node;

//統計結點的個數

count++;

}/**

* 在指定位置插入結點

*@param index

*@param node

*/public

void

insertnodebyindex(int index,node node)

//記錄我們遍歷到第幾個結點了,也就是記錄位置。

int length = 1;

//可移動的指標

//我們的temp代表的是當前位置的前乙個結點。

//前乙個結點 當前位置 後乙個結點

//temp temp.next temp.next.next

node temp = head;

//遍歷單鏈表

while(head.next != null)

length++;

temp = temp.next;} }

/*** 刪除某個位置的結點

*@param index

*/public

void

deletenodebyindex(int index)

int length=1;

node temp = head;

while(temp.next != null)

length++;

temp = temp.next;}}

/*** 某個資料是否在鍊錶中

*@param data

*@return

*/public

boolean

iscontain(int data)

else

temp = tail;

tail = tail.next;

}}

return flag;

}public

void

print()

system.out.println();

}

public

static

void

main(string args)

}程式執行結果:

false

鍊錶的長度為:0

***************===

2插入的位置不合理

false

鍊錶的長度為:2

***************===

false

鍊錶的長度為:3

***************===

給定的位置不合理

false

鍊錶的長度為:3

***************===

鍊錶遍歷結果為: 276

鍊錶中是否存在2這個元素:true

鍊錶中是否存在5這個元素:false

鍊錶中是否存在6這個元素:true

import lianbiao.singlelist.node;

public

class

mylink

public

node(int data)

}/**

* 增加乙個結點

*@param d

*/public

void

addnode(int d)

//乙個移動的指標(把頭結點看做乙個指向結點的指標)

node tmp = head;

while (tmp.next != null)

//temp為最後乙個結點,將其next指向新結點

tmp.next = newnode;

}public

void

insertnodebyindex(int index,node node)

int i=1;

node prenode = head;

node curnode = prenode.next;

//遍歷單鏈表

while(curnode != null)

prenode = curnode;

curnode = curnode.next;

i++;} }

/***@param index:刪除第index個節點

*@return

*/public

boolean

deletenode(int index)

if (index == 1)

//i表示第i個位置

int i = 1;

node prenode = head;

node curnode = prenode.next;

//迴圈遍歷尋找第i個結點的位置

while (curnode != null)

prenode = curnode;

curnode = curnode.next;

i++;

}return

false;

}/**

* 鍊錶長度

*@return 返回節點長度

*/public

intlength()

return length;

}/**

* 某個資料是否在鍊錶中

*@param data

*@return

*/public

boolean

iscontain(int data)

else

temp = tail;

tail = tail.next;

}}

return flag;

}/**

* 列印鍊錶

*/public

void

printlist()

system.out.println();

}public

static

void

main(string args)

}程式執行結果:

鍊錶的長度為:0

***************=

鍊錶的長度為:6

頭結點的資料域為:5

鍊錶列印結果為:531

25536 ***************=

after deletenode(4):鍊錶列印結果為:531

236

***************=

鍊錶的長度為:6

鍊錶列印結果為:531

25236 ***************=

鍊錶是否包含資料域為25的結點:true

鍊錶是否包含資料域為10的結點:false

java資料結構 單鏈表實現

節點類 package linkedlist public class node 單鏈錶類 package linkedlist 鍊錶 author administrator param public class linkedlist else curr.next node length retu...

資料結構 單鏈表的java實現

單鏈表實現鍊錶的列印及元素刪除操作,鍊錶的實現主要是next屬性的定義,將一堆節點關聯起來的。實現簡單的鍊錶如下 public class linknode public linknode getnext public void setnext linknode next public int ge...

Java資料結構 單鏈表

鍊錶是一種資料結構,和陣列同級。鍊錶在進行迴圈遍歷時效率不高,但是插入和刪除時優勢明顯。單鏈表結構 單鏈表就相當於從頭結點開始,每乙個節點只要記錄下一節點,就把所有資料串了起來,形成了乙個單向鍊錶。各個節點的儲存可以是分散的。頭插法 尾插法 entry entry new entry val 建立要...