链接列表用户输入

时间:2017-04-12 13:36:56

标签: java singly-linked-list

我正在尝试创建一个链接列表,该列表将从用户那里获取他想要使用内置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;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

这有助于您了解链接列表: LinkedList in wikipedia

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;
}