1. 程式人生 > >單鏈表的簡單實現

單鏈表的簡單實現

!= 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; } }

單鏈表的簡單實現