鏈表

public class MyNode {
private Node headNode;
private Node lastNode;
private int size;

public void insert(int index , int data) {
    if (index < 0 || index > size) {
        throw new IndexOutOfBoundsException();
    }
    Node node = new Node(data);
    if (0 == size) {
        headNode = node;
        lastNode = node;
    }else if (0 == index) {
        //頭節點插入
        node.next = headNode;
        headNode = node;
    }else if (size == index) {
        //尾節點插入
        lastNode.next = node;
        lastNode = node;
    }else {
        Node preNode = get(index-1);
        Node nextNode = preNode.next;
        preNode.next = node;
        node.next = nextNode;
    }
    size++;
}
public Node get(int index) {
    if (index < 0 || index >= size) {
        throw new IndexOutOfBoundsException();
    }
    Node temp = headNode;
    for (int i = 0;i < index; i++) {
        temp = temp.next;
    }
    return temp;
}

public Node delete(int index) {
    if (index < 0 || index >= size) {
        throw new IndexOutOfBoundsException();
    }
    Node deleteNode = null;
    if (0 == index) {
        //刪除頭結點
        deleteNode = headNode;
        headNode = headNode;
    }else if (index == size - 1) {
        //刪除尾節點
        Node preNode = get(index - 1);
        deleteNode = lastNode;
        preNode.next = null;
        lastNode = preNode;
    }else {
        Node preNode = get(index - 1);
        deleteNode = preNode.next;
        preNode.next = preNode.next.next;
    }
    size--;
    return deleteNode;
}

public void outPut() {
    Node temp = headNode;
    while (null != temp) {
        System.out.println(temp.data);
        temp = temp.next;
    }
}

public static void main(String[] args) {
    MyNode myNode = new MyNode();
    myNode.insert(0,1);
    myNode.insert(1,2);
    myNode.insert(2,3);
    myNode.insert(3,4);
    myNode.insert(4,5);
    myNode.delete(2);
    myNode.outPut();
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章