不在双向链表中插入节点

时间:2015-10-06 06:24:40

标签: java linked-list nodes doubly-linked-list

在我的add()方法中,我必须插入一个节点,但代码恰好不会将该节点添加到列表中。 add()方法与迭代器一起使用,并将具有指定数据的节点添加到通过调用next()返回的元素之前的列表中。 例如:

 SimpleList<String> list = new SimpleList<String>();
    list.add("A");
    list.add("B");
    list.add("C");
    list.add("D");
    list.add("E");
    System.out.println(l); // Output is [A,B,C,D,E]

    ListIterator<String> iter = list.listIterator();
    iter.add("1th");
    System.out.println(l);

iter.add("1th")之后的输出应该是[A, 1th, B, C, D, E],但仍然会给我[A, B, C, D, E]。我试图使用调试器但仍然没有什么是清楚的。 smb请帮忙吗?

public class AListIterator implements ListIterator<T>{
        protected Node<T> current;                 // Current node, return data on call to next()
        protected Node<T> lastVisited = null;      // Used for calls to remove
        protected boolean lastMoveWasPrev = false; // Necessary for implementing previous()
        // Move the iterator forward and return the passed-over element
        public T next( ){
            if(!hasNext( ))
                throw new RuntimeException("Already at end of list"); 
            T nextItem = current.data;
            lastVisited = current;
            current = current.next;
            lastMoveWasPrev = false;
            return nextItem;
        }
public void add(T x){
            this.next();
            Node<T> newNode = new Node<T>(x);
            newNode.prev = lastVisited;
            newNode.next = current;
        }     

0 个答案:

没有答案