Попытка реализовать single-linked-list
в нижеприведенной программе, я действительно не могу понять, как добавить узел в Связанный список (для начала, m попробовать его на пустым связанным списком).Добавить узлы в связанном списке
Говоря простым простым, я пытался setData
и setNext
но getSizeofList()
возвращение 0
каждый раз .... его действительно выглядит как ракетостроение мне сейчас !!
Вопрос: Может кто-нибудь сказать мне, как реализовать это .... или, вернее, добавить узел в существующий связанный список ....
Что я пытался до сих пор, и почему они dint отработано: Я ссылался на несколько программ, но они были слишком сложны для меня, чтобы понять (rocket science), поэтому написала ниже программу из того, что я понял из алгоритмов .... но даже в algo's они просто показывают методы о том, как для реализации, и это то, где я потерпел неудачу, поскольку, я не понимаю, что data-type
и value
должны быть переданы для добавления узла ...
пожалуйста, не то, что м не ява парень, поэтому, пожалуйста, идти легко, этот вопрос приходит как попытка узнать
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' указатели java находятся в памяти и как они работают !! – NoobEditor
@NoobEditor: данные распределяются в отдельных местах, не связанных с другими данными. Для каждого узла вы выделяете достаточно места для 3 указателей, которые указывают на 3 абстрактных точки в памяти, которые содержат предыдущий узел, следующий узел и данные текущего узла. –