链表用户输入

问题描述 投票:0回答:1

我正在尝试创建一个链接列表,该列表将接受用户的输入,即他想要创建链接列表的数量,而不使用内置的 LinkedList 函数。但如果用户输入负数,则会提示用户输入正数。我已经完成了用户输入的代码,但发现其他部分非常困难 - 负输入和链接数字。任何人都可以给我这些代码部分。

 import java.io.*;
import java.util.Scanner;

    class MyList{
    public MyList firstLink,lastLink;
    int info,size;
    MyList link;
    private MyList next;

    MyList(){
        this.link=null;
        firstLink = null;
        lastLink=null;
    }
    public boolean isEmpty(){
         return(firstLink == null);
     }

     public void showMyList() {
         MyList currentLink = firstLink;
            System.out.print("List: ");
            while(currentLink != null) {
                currentLink.showMyList();
                currentLink = currentLink.lastLink;
            }
            System.out.println("");
        }
}

    public class MyLinkedList {

    public static void main(String[] args){

        MyList newMyList=new MyList();
        Scanner userInput= new Scanner(System.in);

        int userInputNumber;
        System.out.println("Enter Total Data");
        userInputNumber = userInput.nextInt();
            int i=1;
            while(i<=userInputNumber){
            System.out.println("Enter Data "+ i +":");
            i++; 
            newMyList.info=userInput.nextInt();
            }
            if(newMyList.firstLink!=null){
                newMyList=newMyList.firstLink;
                newMyList=newMyList.lastLink;
                newMyList.firstLink=newMyList.firstLink.link;
        }
    }
}
java singly-linked-list
1个回答
0
投票

这可以帮助您理解链接列表: 维基百科中的 LinkedList

链表由节点组成。节点可能如下所示:

class Node {
  Node previousNode, nextNode;
  int value;

  public Node getLastNode() {
    // traverse nextNode till it is null.. return the Node before.
  }
}

创建一个读取用户输入的方法,该方法返回输入的数字。

private int getUserInput() {
  int result = -1;
  Scanner userInput= new Scanner(System.in);
  while ( result < 0) {
    result = userInput.nextInt();
  }
  return result;
}

之后,您可以通过根据需要创建节点来创建 LinkedList。

Node myLinkedList = new Node();
myLinkedList.value = 0;
for (int i = 1; i < getUserInputResult; i++) {
  var newNode = new Node();
  newNode.value = i;
  // concat new Node to last Node in List;
  var lastNodeInList = myLinkedList.getLastNode();
  lastNodeInList .NextNode = newNode;
  newNode.previousNode = lastNodeInList;
}
© www.soinside.com 2019 - 2024. All rights reserved.