Проблема, с которой я столкнулся, заключается в том, чтобы использовать предварительно настроенный итератор, который мне предоставил мой профессор Однако, когда я пытаюсь выполнить 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;
}