我对如何添加到链表的前面感到困惑。
/**
* data is added to the front of the list
* @modifies this
* @ffects 2-->4-->6 becomes data-->2-->4-->6
*/
public void insert(E data) {
if (front == null)
front = new Node(data, null);
else {
Node temp = new Node(data, front);
front = temp;
}
}
这会创建一个循环。我该如何避免?
我有一个LinkedList类,它将前端节点保存在一个名为front的变量中。 我在这个LinkedList类中有一个Node类。
任何帮助将不胜感激。 谢谢。
答案 0 :(得分:7)
您是否可以访问“下一步”节点?
在那种情况下
public void insert(E data) {
if (front == null) {
front = new Node(data, null);
} else {
Node temp = new Node(data, null);
temp.next = front;
front = temp;
}
}
-
class LinkedList {
Node front;
LinkedList() {
front = null;
}
public void AddToFront(String v) {
if (front == null) {
front = new Node(v);
} else {
Node n = new Node(v);
n.next = front;
front = n;
}
}
}
class Node {
public Node next;
private String _val;
public Node(String val) {
_val = val;
}
}
答案 1 :(得分:2)
凭借我有限的链表知识,我会冒险尝试:
Node temp = new Node(data);
temp.next = front;
front = temp;
你可能想要等待某人确认。
答案 2 :(得分:2)
我假设Node构造函数将下一个指针作为其第二个参数,在这种情况下,我没有看到此代码有任何明显错误。这听起来像是一个家庭作业问题。如果是,您应该将其标记为。
答案 3 :(得分:1)
这会创建一个循环。我该如何避免?
如果没有链接列表实现的其余代码,则无法确定,但您提供的代码看起来并不像它创建一个循环。
如果正在创建一个循环,则很可能是在其他地方创建的。或者,您/您的测试误将其他一些故障误认为是由循环引起的。
如果您需要更多帮助,请发布更多代码/证据...特别是Node构造函数,以及让您认为自己有周期的代码。
答案 4 :(得分:0)
添加一个新节点,如果当前头不为null,则将当前头指向新创建的节点作为下一个节点。
Node insert(Node head,int x) {
Node node = new Node();
node.data = x;
if(head != null) {
node.next = head;}
return node;
}
答案 5 :(得分:0)
这是我在Java中将节点插入到链接列表的前面或头部的实现。
void insertAtHead(Object data){
if(head==null) {
head = new Node(data);
}
Node tempNode = new Node(data);
Node currentNode = head;
tempNode.setNext(currentNode.getNext());
head.setNext(tempNode);
incrementCounter();
}
答案 6 :(得分:0)
一个简单快速的[可能不是有效的]解决方案是使用新元素创建一个临时的新LinkedList,并将两个列表与前面的temp-list合并在一起。 参见下面的示例
import java.util.*;
public class Main
{
public static Queue<Integer> addFirst(Queue<Integer> intQueue, Integer i){
Queue<Integer> intQueue2 = new LinkedList<Integer>();
intQueue2.add(i);
intQueue2.addAll(intQueue);
intQueue = intQueue2;
return intQueue;
}
public static void main(String[] args) {
System.out.println("Hello LinkedList");
Queue<Integer> intQueue = new LinkedList<Integer>();
intQueue.add(3);
intQueue.add(4);
intQueue.add(5);
intQueue = addFirst(intQueue,2);
intQueue = addFirst(intQueue,1);
System.out.println(intQueue);
}
}