頭插法
頭插法就是在已有的節點的前面插入新節點
如何實現
(1)先定義一個節點類ListNode,里面有value值和地址
public class ListNode {int value;ListNode next;public ListNode(int value){this.value = value;}@Overridepublic String toString() {return "ListNode{" +"value=" + value +", next=" + next +'}';}
}
(2)再創建一個鏈表類,里面定義一個頭節點,ListNode head = null;把第一個節點的指針傳給它,然后用頭插法插入一個新的節點
下面是頭插法的代碼:
/*** 頭插法 結果是逆序* @param value*/public void headInsert(int value){ListNode node = new ListNode(value);if(head == null){head = node;return ;}node.next = head;head= node;}
尾插法
在鏈表的最后面插入節點
尾插法與頭插法不同的是,先要找到鏈表最后面那個節點,所以就要定義一個游標index,index從頭結點開始,如果index.next不是null,那么就往后面走,直到找到最后一個節點
此時游標index在頭結點
尾插法的相關代碼:
/*** 尾插法* @param value*/public void headFront(int value){ListNode node = new ListNode(value);if(head ==null){head = node;return ;}ListNode index = head;while(index.next != null){index = index.next;}index.next= node;}
總的ListLink類代碼如下:
public class LinkList {public ListNode head;/*** 頭插法 結果是逆序* @param value*/public void headInsert(int value){ListNode node = new ListNode(value);if(head == null){head = node;return ;}node.next = head;head= node;}/*** 尾插法* @param value*/public void headFront(int value){ListNode node = new ListNode(value);if(head ==null){head = node;return ;}ListNode index = head;while(index.next != null){index = index.next;}index.next= node;}
}
測試類:
public class Test {public static void main(String[] args) {LinkList linkList =new LinkList();//頭插法的測試
// linkList.headInsert(5);
// linkList.headInsert(7);
// linkList.headInsert(15);
// linkList.headInsert(25);
// linkList.headInsert(45);
// linkList.headInsert(6);
// System.out.println(linkList.head);//尾插法的測試linkList.headFront(3);linkList.headFront(6);linkList.headFront(4);linkList.headFront(78);linkList.headFront(34);linkList.headFront(28);linkList.headFront(12);System.out.println(linkList.head);}
}
要注意的是 頭插法的結果是倒序的,而尾插法的結果是正序的