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() は、パラメーターとしてプラグインされた String と等しいデータを持つノードを検索しますが、画面上の現在のノードの String 表現を返す outputList() メソッドを呼び出すと、無限ループに陥ります。 .
outputList メソッドは次のとおりです。
public void outputList()
{
Node<E> position = head;
do
{
System.out.print(position.data + " ==> ");
position = position.next;
} while((position != null) && (position.next != position));
}
どんな助けでも大歓迎です..事前に感謝します。
Node クラスは次のとおりです。
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