首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单链表应该打印(12,7),而打印(127,)

单链表应该打印(12,7),而打印(127,)
EN

Stack Overflow用户
提问于 2022-02-11 17:36:20
回答 2查看 61关注 0票数 0

我试图编写一个程序,它接受一个整数并将它插入链接列表中的第二个位置,但是当我运行我的程序时,它打印出(127 ),当我希望它打印出来时(12,7)。我知道这可能是一个简单的修复,但我不知道如何修复这个小错误。我试过像头、尾、尾这样的词,但是我做的事情似乎都没有用。任何输入都会有帮助!

代码语言:javascript
复制
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也是这样的!

代码语言:javascript
复制
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方法

代码语言:javascript
复制
public void addFirst(Integer e) {                
    head = new Node(e, head);              
    if (size == 0)
      tail = head;                           
    size++;
  }
EN

回答 2

Stack Overflow用户

发布于 2022-02-11 18:00:12

你为什么不直接使用LinkedList呢?

代码语言:javascript
复制
LinkedList<Integer> ll = new LinkedList<>();
ll.add(12);
ll.add(1, 7);
System.out.println("LinkedList is: " + ll.toString());

输出将是: LinkedList是: 12,7

票数 0
EN

Stack Overflow用户

发布于 2022-02-11 19:11:37

您从不在addFirst之后更新,元素,因此,不会在第一个元素之后被打印出来。

您必须在您的tail = Final;方法中添加addSecond,才能正确地打印这个特定的示例。

这就回答了为什么在这种情况下要打印(127,)而不是(12, 7)的具体问题。

然而,很难看出你将如何处理这个问题。您是否计划为要添加的每个元素编写一个新方法?如果有一个通用的add就更有意义了

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71084284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档