我试图编写一个程序,它接受一个整数并将它插入链接列表中的第二个位置,但是当我运行我的程序时,它打印出(127 ),当我希望它打印出来时(12,7)。我知道这可能是一个简单的修复,但我不知道如何修复这个小错误。我试过像头、尾、尾这样的词,但是我做的事情似乎都没有用。任何输入都会有帮助!
public class IntSinglyLinkedList {
private static class Node {
private Integer element;
private Node next;
public Node(Integer e, Node n) {
element = e;
next = n;
}
private Node head = null;
private Node tail = null;
private int size = 0;
public IntSinglyLinkedList() { }
public int size() { return size; }
public void addSecond(Integer e) {
if(head == null)
return;
Node Final = new Node(e, head);
Final.next = head.next;
head.next = Final;
}
public static void main(String[] args) {
IntSinglyLinkedList sl = new IntSinglyLinkedList();
sl.addFirst(12);
sl.addSecond(7);
System.out.println(sl.toString());
}
}如果有任何帮助的话,我的toString也是这样的!
public String toString() {
StringBuilder sb = new StringBuilder("(");
Node walk = head;
while (walk != null) {
sb.append(walk.getElement());
if (walk != tail)
sb.append(", ");
walk = walk.getNext();
}
sb.append(")");
return sb.toString();
}我的addFirst方法
public void addFirst(Integer e) {
head = new Node(e, head);
if (size == 0)
tail = head;
size++;
}发布于 2022-02-11 18:00:12
你为什么不直接使用LinkedList呢?
LinkedList<Integer> ll = new LinkedList<>();
ll.add(12);
ll.add(1, 7);
System.out.println("LinkedList is: " + ll.toString());输出将是: LinkedList是: 12,7
发布于 2022-02-11 19:11:37
您从不在addFirst之后更新,元素,因此,不会在第一个元素之后被打印出来。
您必须在您的tail = Final;方法中添加addSecond,才能正确地打印这个特定的示例。
这就回答了为什么在这种情况下要打印(127,)而不是(12, 7)的具体问题。
然而,很难看出你将如何处理这个问题。您是否计划为要添加的每个元素编写一个新方法?如果有一个通用的add就更有意义了
public Node add(final Integer i) {
final var node = new Node(i, null);
if (size == 0) {
head = node;
} else {
tail.next = node;
}
tail = node;
size++;
return node;
}https://stackoverflow.com/questions/71084284
复制相似问题