我有以下代码,但我不理解w.next = nextnode这一行; 这是什么意思? 我的代码似乎很复杂,或者是否有最简单的方法来实现它 有什么建议或想法吗?
class Node1{
private String data;
private Node1 nextNode=null;
private Node1 lastnode=null;
private Node1 next=null;
public Node1()
{
}
public Node1(String r)
{
data=r;
}
public void displayitems()
{
System.out.println(data);
}
public void insert(String data){
Node1 w=new Node1(data);
if(w==null)
{
lastnode=w;
}
else
{
w.next=nextNode;
nextNode=w;
}
}
}
public void display()
{
System.out.println("Items in list");
Node1 current=nextNode;
current.displayitems();
}
public static void main(String[] arg){
Node1 a=new Node1();
a.insert("deepak");
a.insert("deep");
a.display();
}
}
答案 0 :(得分:1)
首先,您尝试实现自己的一些数据结构是件好事。但是如果你需要实现这样的东西,你需要深入分析数据结构(在你的情况下为Singly LinkedList)如何存储和检索数据&是否维持插入顺序或维持排序顺序等。
建议您在做之前始终遵循一些要点 实施
- 首先了解这个概念。
- 写下算法,了解它的工作原理。
- 设计它(可能在纸上写下设计是最好的做法,并且会让你清楚地看到你实施的内容)
- 实施&测试一下。
醇>
在这种情况下,您为链接列表设计了一个Node类,它将处理所有与节点相关的任务,例如存储下一个/上一个节点地址(SinglyLinkedList将只存储下一个节点地址)。将此节点保持为LinkedList类的Inner class(最佳实践)。
private class Node<T>{
private Node<T> next;
private T data;
public Node(T data, Node<T> next){
this.data = data;
this.next = next;
}
}
我在这里使用了Generics。你也可以不使用泛型来做到这一点。在遍历这些Node对象的linkedlist类中实现链接列表操作(如添加/删除等)。无论你写下什么算法,都可以帮助你在这些地方以有效的方式实施。
我的示例代码在这里。无论你在这里发布什么代码都不是一个好的实现。请按照我指定的步骤进行操作。你会得到更好的代码。
public class LinkedList<T> {
private Node<T> head;
private Node<T> nextNode;
private int size = 0;
public void addFirst(T element){
head = new Node<T>(element, head);
}
public void add(T element){
if(head == null)
addFirst(element);
else{
Node<T> node = head;
while(node.next != null){
node = node.next;
}
node.next = new Node<T>(element, null);
}
size++;
}
public int size(){
return size;
}
// Inner class somewhere here
}
这是一个简单的表示。你可以实现Iterable&amp; Iterator接口遍历列表。