2
我想在類NumLinkedList中實現一個抽象數據類型的NumList作爲單向鏈表。初始化單鏈表Java
public class NumLinkedList implements NumList
{
Node head;
int nItem;
private class Node
{
public Node next;
public double value;
public Node(double i, Node j)
{
value = i;
next = j;
}
}
public NumLinkedList()
{
head = null;
nItem = 0;
}
是我的初始化,我有以下方法的麻煩。
public void print()
{
Node currNode = head;
while(currNode.next != null)
{
currNode = currNode.next;
System.out.println(currNode.value);
}
}
public int size()
{
int size = 0;
Node currNode = head;
while(currNode.next != null)
{
currNode = currNode.next;
size++;
nItem++;
}
return size;
}
public void insert(int i, double value)
{
if(i < 0)
{
System.out.println("Error. out of bounds.");
}
if (i > size())
{
Node currNode = head;
for(int j = 0; j < i; j++)
{
currNode = currNode.next;
}
currNode.next = new Node(value,null);
}
if (i <= size())
{
Node currNode = head;
for(int j = 0; j < i-1; j++) // this moves CurrNode to the i-1th node
{
currNode = currNode.next;
}
currNode.next = new Node(value,currNode.next);
}
nItem++;
}
運行我的測試代碼
,
public static void main (String[] args)
{
NumLinkedList test;
test = new NumLinkedList();
//System.out.println("this is how many initial items the initialized list has");
//System.out.println(test.size());
test.insert(1, 0.1);
System.out.println("have tried to insert value 0.1 @ position 1, that is the first element in list.");
test.print();
System.out.println("tried print(). did it work?");
test.insert(4, -1);
我得到的
test.insert(1, 0.1);
錯誤,指的是
if (i > size())
和
while(currNode.next != null)
由於我初始化我的陣列ADT失敗,我相信我的ADT列表也被錯誤初始化。在Google上很難找到適當的例子,ADT初始化的任何參考?
等待我不明白爲什麼我需要一個(head == null); 這是初始條件和一個給定的,我不應該只是檢查i值和範圍/限制我的值? – user1702633
如果'head == null'是給定的,你的列表將一直是空的。 'head == null'在初始化之後保持不變,但只有在您沒有將其設置爲正確編碼插入時的某個其他值時才適用。 –