單鏈表的簡單實現
阿新 • • 發佈:2017-08-17
!= void 更換 節點類 color oid bsp 節點 簡單
//定義一個節點類 class Node{ int data; Node nextNode; public Node(int data) { // TODO Auto-generated constructor stub this.data = data; } }
鏈表類:
package test; /** * * @author dao * */ // 鏈表類 public class ListNode { Node firstNode; // 第一個節點 int length = 0; Node current;// 當前節點 Node previous; // 指定位置插入的未插入時current的下一節點 // 增加node public void addNode(int data) { if (length == 0) { // 鏈表為空時,增加的為首節點 Node node = new Node(data); node.nextNode = node; firstNode = node; current = firstNode; length++; }else { Node node = new Node(data); // 不為空的鏈表增加節點 current.nextNode = node; current = node; length++; } } // 任意位置增加node public void insertNode(int i, int data) { int pos = 1; Node node = new Node(data); current = firstNode;if (i == 1) { // 插入位置為1時,首節點更換 firstNode = node; node.nextNode = current; current = firstNode; } else if (i > length) { // 判斷鏈表是否有插入位置 System.out.println("不能在該位置插入"); return; } else { while (i - 1 != pos) { current = current.nextNode; pos++; } } Node nodeNext = current.nextNode; // 未插入時current的下一節點,因為要在兩個節點間插入要臨時保存這兩個節點的。 current.nextNode = node; // 下個節點的引用更換 node.nextNode = nodeNext; length++; } // 取出所有node public void printAllNode() { current = firstNode; for (int i = 1; i <= length; i++) { // 從第一個節點開始,依次打印出所有節點 System.out.println(current.data); current = current.nextNode; } } } // 定義一個節點類 class Node { int data; Node nextNode; public Node(int data) { // TODO Auto-generated constructor stub this.data = data; } }
單鏈表的簡單實現