現在、二重リンクリストを学習中です。アイテムを削除 - テール再帰を使用した二重リンクリスト
私はほぼ100%機能していた二重リンクリストを書き直すことができました。しかし、私は末尾再帰でそれを書く方法を学ぶ必要があります。私は末尾再帰を使用して作業私のAddItemメソッドを取得するために管理していると私は今働いて削除項目を取得するに探してい
public class DLLNode
{
private DLLNode previous;
public DLLNode next;
private String value;
public DLLNode(String value)
{
this.value = value;
this.previous = previous;
this.next = next;
}
public DLLNode(String value, DLLNode next, DLLNode previous)
{
this.value = value;
this.next = next;
this.previous = previous;
}
public String GetDataItem()
{
return value;
}
public void setDataItem()
{
this.value = value;
}
public DLLNode GetPreviousNode()
{
return previous;
}
public void setPrevious(DLLNode previous)
{
this.previous = previous;
}
public DLLNode GetNextNode()
{
return next;
}
public void setNextNode(DLLNode next)
{
this.next = next;
}
public void addItem(String value) {
if(this.next == null) {
// Stopping condition
DLLNode newNode = new DLLNode(value);
this.next = newNode;
} else {
// Recurse
this.next.addItem(value);
}
}
}
:
以下は私のDLLNodeコードです。私はaddItemのように私のDLLNodeにdeleteItemを追加する必要があると思います。
以下私DoublyLinkedListクラスです:私はこのコードを変換して始めることができる場所に
public class DoublyLinkedList
{
private int noOfItems;
private DLLNode head;
private DLLNode tail;
// Default constructor
public DoublyLinkedList()
{
head = null;
tail = null;
this.noOfItems = 0;
}
public void DeleteItem(int index)
{
if (index ==0)
{
System.out.println("Out of Bounds");
}
if (index > noOfItems)
{
System.out.println("Out of Bounds");
}
if (head == null)
{
System.out.println("No Item to remove");
}
else if (index == 1)
{
head = head.GetNextNode();
noOfItems--;
}
else
{
int position = 0;
DLLNode currentNode = head;
while (currentNode != null) {
if (position == index-1) {
currentNode.setNextNode(
currentNode.GetNextNode().GetNextNode());
noOfItems--;
break;
}
currentNode = currentNode.GetNextNode();
position++;
}
}
}
}
任意のヒントをいただければ幸いです。
親切、 ベン。
P.S.コードが書式設定された方法に対する謝罪 - 私はそれを修正しようとしましたが、ソートされていないようです。誰でもコードを書式設定するのにいいですか?さらにテストなし
こんにちはYnon、私はに行くヘルパーを推測している私DLLNodeクラス?あるいは、彼らは両方ともdoublylinkedlistクラスに入っていますか? – benjano
DoublyLinkedListクラス内にある必要があります。 – Ynon
私はリストが循環的であると仮定していることに注意してください。つまり、頭が最後のノードを指し、その逆もまた同様です。 – Ynon