使用节点添加到SortedLinkedList

时间:2015-10-05 23:17:44

标签: linked-list nodes compareto sorted

我正在制作一个SortedLinkedList,我试图添加让我们说10个不同值的整数,这样我就可以运行一些asssert测试。但是我在添加它们时遇到问题所以当它们到达LinkedList时它们已经被排序了,我尝试使用curr.info.compareTo(x) > 0,但是我在制作正确的else / if语句时遇到了麻烦,所以它对它们进行了排序当它们被添加时。

此代码有4个类,如果不清楚,我可以提供更多。

提前感谢您的帮助。

致以最诚挚的问候,

维克多

public class SortedLinkedList<T extends Comparable<T>> implements Iterable<T> {

    /*  Easy operations for a linked list

    add(x): Searching for the place where the element x is to be added must
        take place in the calling routine. This must set previous to
        point to the node AFTER which the new element is to be inserted.
        curr is set to point to the new element.

    remove(): The curr element is removed from the list. Searching for this 
        element must take place in the calling routine. This must set 
        curr to point to the element to be removed. After removal curr
        points to the element following the removed one. 

    isEmpty(): checks for an empty list

    endOfList(): checks whether curr has reached and passed the end of the list 

    retrievecurr(): return the info part of the curr element.

    reset(): resets the list so that curr points to the first element

    succ(): an iterator, moves curr one step forward

    Note that when a class implements the interface Iterable<T> then
    it can be the target of the "foreach" statement. See IterationExample.java */


    private Node start, curr, prev;
    public SortedLinkedList() {
        curr = null;     // the curr position in the list
        start = null;    // the first element
        prev = null;     // the node before curr
    }
    public void add(T x) {
        if (start == null) {            // if start == null, insert a first element into an empty list
            Node newNode = new Node();  // create the new element, info and link are set to null.
            newNode.info = x;           // and assign the data given as parameter. The link is left as null            
            start = newNode;            // start is updated to point to the new element
            curr = start;               // curr is updated to point to the new first (and only) element
        } else if (prev == null) { // a new first element is inserterd into a non-empty list
            Node newNode = new Node();  // a new node is created ...
            newNode.info = x;           // and assigned the data given as parameter
            newNode.link = start;       // and linked before the old first element 
            start = newNode;            // start is updated to point to the new first element
            curr = newNode;             // curr is updated to point to the new first element
        } else { // a new element is inserted last (if prev.link == null) or between prev and curr
            Node newNode = new Node();  // create a new node 
            newNode.info = x;           // assign it the data given as parameter 
            newNode.link = prev.link;   // link it before curr ...
            prev.link = newNode;        // ... and after previous
            curr = newNode;             // update curr to point to newNode      
        }
    } // add*
}

0 个答案:

没有答案