單鏈表
你知道單鏈表長什麼樣子嗎?嘿嘿,說起來感覺超級簡單,但是寫起來考慮的就多嘍
代碼
package NodeDemo;
/**
* @param
* @Author: judy
* @Description:
* @Date: Created in 20:02 2019/1/18
*/
public class Link {
//初始化head爲空
Node head=null;
/**
* 創建頭結點
* @param data 數據
*/
public void create(String data){
//判斷頭肩點是否爲空
Node node = new Node(data);
if (head == null) {
head = node;
return;
}
Node nodeNext= head;
//說明不是最後一個,得到最後一個這樣可以賦值node
while (nodeNext.next != null){
nodeNext = nodeNext.next;
}
//得到最後的一個地址指向節點
nodeNext.next = node;
}
/*** *
*
* @param index 刪除的節點的地址
*/
public boolean deleteNode(int index){
//1判斷是否有節點
//1.1節點長度左右邊境
//2刪除是否爲頭結點
//3刪除指定爲節點
if(index<0 || lengthNode()<0){
//不符合條件
return false;
}
if(index==1){
//刪除頭節點
head=null;
return true;
}
if(index>1){
//1得到當前節點
//2得到前一個節點
//3得到後一個節點
Node lastNode= head;
//得到前一個節點,需要判斷index
Node findPreNode = head;
int i=1;
while (findPreNode.next!=null){
if(index==i){
//找到要刪除節點的後節點點
lastNode.next = findPreNode.next;
return true;
//找到刪除節點後節點
}else {
i++;
lastNode = findPreNode; //前
findPreNode = findPreNode.next; //後
}
}
}
return true;
}
/**
*
* @return 鏈表長度
*/
public int lengthNode(){
//創建一個新的節點,爲了下面循環節點
Node node = head;
int length = 0;
//如果節點
while (node.next != null){
length ++;
node=node.next;
}
return length;
}
//打印
public void printNode(){
Node nowNode= head;
while (nowNode.next!=null){
System.out.println(nowNode.data+",");
nowNode= nowNode.next;
}
}
public static void main(String[] args){
Link link = new Link();
link.create("9");
link.create("8");
link.create("7");
link.create("6");
link.create("5");
link.printNode();
System.out.println("---------------------");
link.deleteNode(2);
link.printNode();
}
}
結果:9,
8,
7,
6,
9,
7,
6,
思路
先說一下思路把
1判斷是否有節點
2判斷頭結點是否有數據
3插入頭節點
4如果頭結點不爲空則先下一次插入數據
5刪除節點
6獲取節點長度
8得到要刪除接地位置,然後node.next的時候一次判斷是否相等,如果相等則刪除
總結
單鏈表簡單的實現了嘍.謝謝靖峯同學~