這是一個練習中,我們在課堂上做的一部分,我只是無法弄清楚之前插入...手冊鏈表 - 方法
所需的方法是的insertBefore(對象數據)的方法,其中,當(由用戶輸入)參考數據之前插入用戶選擇這種方法會促使它進入一個數據
的應該是如何運行的一個例子:
// assuming linked list has data 1,2,3 inserted already
Choose Method:
1)Insert Before
choice: 1 // input by user
====Insert Before====
Enter Reference data: 2 // input by user
Enter Data to be inserted: 5 // input by user
supposed output: 1,5,2,3
這裏是我爲這項工作的代碼: (這是在名爲LinkList的類中,變量爲
protected int end;
protected Node start;
和一個內部類稱爲節點)
private class Node
{
public char data;
public Node next;
public Node(char data)
{
this.data = data;
}
}
public void insertBef(char ref,char data)
{
Node temp = new Node(data);
Node current = start;
if(end!=0)
{
for(int i = 1; i<end; i++)
{
if(current == start)
{
Node newNode = start;
newNode.data = current.data;
newNode.next = temp;
current = current.next;
}
else if(current.data == ref)
{
Node newNode = current;
newNode.data = current.data;
newNode.next = temp;
current = current.next;
}
}
end++;
}
else
{
temp.next = start;
start = temp;
}
end++;
}
但是當我運行我的代碼它。OUPUTS 3,5
,不1,5,2,3
!我看不到我可能會出錯的地方...
有人可以告訴我錯誤在哪裏,並解釋我如何解決它?
據我瞭解,要能夠參考值之前插入你應該:
- 創建一個新的節點,新的數據
- 做出參考值和鏈路
- 作臨時節點將參考值之前的數據鏈接指向新節點,並使新節點的鏈接指向臨時節點
我似乎無法弄清楚如何實現它在Java代碼中...
結束是否表示列表中的節點數量?我注意到,當它不是0時,結尾會增加兩次。 –
請發佈[SSCCE](http://pscode.org/sscce.html)。 –