單向鍊錶是一種線性表,實際上是由節點(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 建立要...