試圖在下面的程序中實現single-linked-list
,我真的無法解除和如何在鏈接列表中添加節點(對於開始,m試着在空鏈接列表)。在鏈表中添加節點
說得樸素簡單,我試圖setData
和setNext
但getSizeofList()
回報0
每次....它真的看起來像一個火箭科學對我來說現在!
問:一些人能告訴我如何實現它....或者說,節點添加到現有的鏈表....
我至今嘗試過,爲什麼他們dint解決了:我引用了多個程序,但它們太複雜了,我不明白(火箭科學),所以在下面的程序中寫下了我從算法中理解的內容....但即使在算法中,他們也只是展示如何實施,這是我失敗的地方,因爲,我不明白,什麼data-type
和value
是通過添加節點...
請不在於m不是Java的傢伙,所以請去容易,這個問題就會出現,試圖瞭解
package Data_S;
public class Linked_List {
private int data;
private Linked_List next_ptr;
private Linked_List headNode = null;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Linked_List ll = new Linked_List();
//ll.setnext(25);
ll.insert_node(24);
ll.traverse();
ll.getSizeofList();
}
//size of list
public void getSizeofList()
{
int l = 0;
Linked_List curr = headNode;
while(curr != null)
{
l++;
curr = curr.getnext();
}
System.out.print("Size of list is = "+l);
}
//insert node
public void insert_node(/*Linked_List node, */int data)
{
if(headNode == null)
{
System.out.println("in insert"); // checking
this.setnext(headNode);
this.setData(data);
System.out.print("value = "+this.getData());
}
}
//set data for this node
public void setData(int data)
{
this.data = data;
}
//return the data
public int getData()
{
return this.data;
}
//set next pointer
public void setnext(Linked_List next_ptr)
{
this.next_ptr = next_ptr;
}
//get next pointer
public Linked_List getnext()
{
return this.next_ptr;
}
}
這是很好的,你想學習,但也有數以百計的描述上鍊表的書籍和網站。你對插入的工作原理不瞭解麼? – Joni
@Joni:我無法弄清楚它是如何分配在內存中的......就像'數組',它們很簡單,因爲它們沒有'next'和'fwd'指針只有一個連續的塊... ..回答你的問題,我不明白如何一塊數據可以有'指針'類的東西在Java中,以便它可以連接.....我只是想了解,這是所謂的'先前/ next'的指針在內存中,它們是如何工作的! – NoobEditor
@NoobEditor:數據分配在與其他數據無關的獨立位置。對於每個節點,爲3個指針分配足夠的空間,這些空間指向內存中包含前一個節點,下一個節點和當前節點數據的3個抽象點。 –