1. 程式人生 > >java 實現有序單鏈表

java 實現有序單鏈表

package com.mylink;

public class Link {
    public String dataStr;
    public Link next;

    public Link(String dataStr) {
        this.dataStr = dataStr;
        this.next = null;
    }

    public void disPlay() {
        System.out.print(" {" + dataStr + "} ");
    }
}
package com.mylink;

public class MySortedList {
    private Link first;

    public MySortedList() {
        first = null;
    }

    public boolean isEmpty() {
        return (first == null);
    }

    /**
     * 插入的時候有序
     *針對:   連結串列是空, 在頭部插入,在中間插入, 在尾部插入 4 中情況
     * @param key
     */
    public void insert(String key) {
        Link newNode = new Link(key);
        Link previous = null;
        Link current = first;

        while (current != null  && (key.compareTo(current.dataStr) > 0)) {
            previous = current;
            current = current.next;
        }

        if(previous == null) {
            first = newNode;
        } else {
            previous.next = newNode;
        }
        newNode.next = current;

    }

    public Link remove() {
        Link temp = first;
        first = first.next;
        return temp;
    }

    public void disPlay() {
        System.out.println("List( first -> last ) : ");
        Link current = first;
        while (current != null) {
            current.disPlay();
            current = current.next;
        }
        System.out.println();
    }
}

 

package com.mylink;

public class SortedListApp {
    public static void main(String[] args) {
        MySortedList mySortedList = new MySortedList();

        mySortedList.insert("60");
        mySortedList.insert("50");
        mySortedList.insert("40");

        mySortedList.disPlay();

        mySortedList.insert("10");
        mySortedList.insert("30");
        mySortedList.insert("20");

        mySortedList.disPlay();

        mySortedList.remove();

        mySortedList.disPlay();
    }
}