我的 CS 教授要求我们使用循环链表开发自己的 Java 程序。我的项目是从循环列表中添加或删除名称(字符串类型)。到目前为止,我的 add 方法运行良好;但是,我的 removeNode() 方法不起作用并且不会删除所需的元素。它也进行了无限循环,我尝试了很多代码,但它们都不起作用。我的删除方法如下:
public E removeNode(E nodeToBeDeleted)
{
Node<E> nodeFound = findNode(nodeToBeDeleted);
if(nodeFound != null)
{
nodeFound.prev.next = nodeFound.next;
nodeFound.next.prev = nodeFound.prev;
size--;
return nodeFound.data;
}
return null;
}
基本上, findNode() 搜索其数据等于作为参数插入的字符串的节点,但是当我调用 outputList() 方法时,该方法返回屏幕上当前节点的字符串表示,它继续无限循环.
outputList 方法是:
public void outputList()
{
Node<E> position = head;
do
{
System.out.print(position.data + " ==> ");
position = position.next;
} while((position != null) && (position.next != position));
}
任何帮助将不胜感激..提前致谢。
节点类是:
static class Node<E> {
/** The data value. */
private E data;
/** The link to the next node. */
private Node<E> next = null;
/** The link to the previous node. */
private Node<E> prev = null;
private Node(E dataItem) {
data = dataItem;
}
private Node(E newData, Node<E> nodeRef)
{
data = newData;
next = nodeRef;
}
private Node(Node<E> prevRef, E newData)
{
data = newData;
prev = prevRef;
}
//set next link
private Node(Node<E> newData, Node<E> nodeRef)
{
data = (E) newData;
next = nodeRef;
}
} //end class Node