LinkedList Бесконечный цикл - PullRequest
0 голосов
/ 09 апреля 2020

Проблема, с которой я столкнулся, заключается в том, чтобы использовать предварительно настроенный итератор, который мне предоставил мой профессор Однако, когда я пытаюсь выполнить l oop через LinkedList, он не пройдет первый узел. Я считаю, что проблема заключается в том, что позиция не применяется при добавлении узла с помощью метода add, однако я добавил код для его продвижения вперед. Данные добавляются в связанный список, но по какой-либо причине связанный список не переходит на следующий узел. Ищу предложения.

addElement

public void addElement(Object val)
    {
        if (listIterator().hasNext())
        {
            while (listIterator().hasNext())
            {
                String data = listIterator().next().toString();
                if (val.toString().compareTo(data) <= 0)
                {
                    listIterator().add(val);
                    break;
                }
            }
        } else {
            listIterator().add(val);
        }
    } 

listString

public String toString()
    {
        if (first == null)
        {
            return "{ }";
        } else {
            String listString = "{ ";
            String val = first.data.toString();
            try {
                while (listIterator().hasNext())
                {
                    listString += val + " ";
                    val = listIterator().next().toString();
                }
            } catch (NoSuchElementException exc) {}

            listString += " }";
            return listString;
        }
    }

hasNext и следующий метод

public boolean hasNext()
        {
            if (position == null) //not traversed yet
            {
                System.out.println("hoes aint shit");
                if (first != null)
                    return true;
                else
                    return false;
            }
            else
            {
                System.out.println("bro down");
                if (position.next != null)
                    return true;
                else
                    return false;
            }
        }

        // Moves the iterator past the next element, and returns
        // the traversed element's data.
        public Object next()
        {
            if (!hasNext())
            {
                System.out.println("yessir");
                NoSuchElementException ex = new NoSuchElementException();
                throw ex;
            }
            else
            {
                previous = position; // Remember for remove

                if (position == null)
                    position = first;
                else
                    position = position.next;

                return position.data;
            }
        }

add

public void add(Object element)
        {
            if (position == null) //never traversed yet
            {
                addFirst(element);
                position = first;
            }
            else
            {
                //making a new node to add
                Node newNode = new Node();
                newNode.data = element;
                newNode.next = position.next;
                //change the link to insert the new node
                position.next = newNode;
                //move the position forward to the new node
                position = newNode;
            }
            //this means that we cannot call remove() right after add()
            previous = position;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...