在Java中为单链表创建新节点
我仍在学习Java,目前正在解决破解编码面试的问题,第2章(LinkedList)中的一个问题要求从未排序的链表中删除重复项。我在GitHub上找到了很多答案/解决方案,但我想创建自己的节点,并编写自己的版本 到目前为止,我实现的是创建了Node类并编写了可以从未排序的LinkedList中删除重复项的函数/方法,但是当我尝试测试它时,我尝试在主函数中创建LinkedList,但我仍然不知道如何解决它。有人能帮助/指导我如何创建一个单独的LinkedList吗? 基本上,我创建了四个节点(第四、第三、第二、头部),并使用Node类将它们连接起来 提前感谢,在Java中为单链表创建新节点,java,linked-list,nodes,Java,Linked List,Nodes,我仍在学习Java,目前正在解决破解编码面试的问题,第2章(LinkedList)中的一个问题要求从未排序的链表中删除重复项。我在GitHub上找到了很多答案/解决方案,但我想创建自己的节点,并编写自己的版本 到目前为止,我实现的是创建了Node类并编写了可以从未排序的LinkedList中删除重复项的函数/方法,但是当我尝试测试它时,我尝试在主函数中创建LinkedList,但我仍然不知道如何解决它。有人能帮助/指导我如何创建一个单独的LinkedList吗? 基本上,我创建了四个节点(第四、
public class Node {
int data;
Node next;
public Node(int data, Node next){
this.data = data;
this.next = next;
}
public String toString(){
return data + "";
}
}
public class problem1 {
public void Remove_duplicates(Node head){
if(head == null){
return;
}
Node current = head;
while(current != null){
Node runner = current;
while(runner.next != null){
if(runner.next.data == current.data){
runner.next = runner.next.next;
}
else {
runner = runner.next;
}
}
current = current.next;
}
}
public static void main(String[] args) {
Node fourth = new Node(5,null);
Node third = new Node(3,fourth);
Node second = new Node(4,third);
Node head = new Node(3,second);
for(Node a: head){
// ERROR: saying can only iterate over an array (or) java.lang.Iterable
System.out.println(a.toString());
a = a.next;
}
}
}
尝试另一种循环,例如
while
Node head = new Node(3, second);
Node node = head;
while (node.next != null) {
System.out.println(node.toString());
node = node.next;
}
就像它解释的那样,它不知道如何在节点上迭代。
使用foreach
的另一种方法是创建一个自己的类,该类实现接口Iterable
,并且包含您的LinkedList
逻辑
对于第二种方法,我建议您阅读以下内容:
返回数据+”代码>废话。尝试返回整数.toString(数据)
@bradimus代码返回数据+“”代码>应该有用。它会有用,但“有用”和“好风格”不是同义词。通读String.valueOf(数据)代码>也同样好。data+“”
没有表达明确的意图,其中asString.valueOf(data)代码>和整数.toString(data)
do。通读我喜欢的问题。一些答案/评论解决了这一点以及陈述的效率。@bradimus是一个很好的建议!-但下一次,如果你在评论中添加一个为什么要更改代码的原因,那就好了,这样每个人都会理解:-)谢谢你的反馈。我没有意识到我需要创建一个自己的类来使用foreach循环。