如何将一堆数据添加到链表中

Posted

技术标签:

【中文标题】如何将一堆数据添加到链表中【英文标题】:how to add bunch of data into linked list 【发布时间】:2021-12-22 17:49:36 【问题描述】:

基本上,我只是尝试学习链表,但我似乎无法理解如何将一堆来自不同变量的数据插入其中。它可以作为数组/ ArrayList 工作吗?在我们结束循环之前,我们应该正确存储数据,但是如何?

假设我有变量(姓名、年龄、电话号码)。

'''

    char stop='Y';

    while(stop!='N')

    System.out.println("\nEnter your name : ");
    int name= input.nextLine();
    System.out.println("\nEnter your age: ");
    int age= input.nextInt();
    System.out.println("\nEnter your phone number: ");
    int phonenum= input.nextLine();

    System.out.println("Enter 'Y' to continue, 'N' to Stop: ");
    stop = sc.nextLine().charAt(0);

'''

【问题讨论】:

【参考方案1】:

首先,更改您的代码以使用适当的类型。姓名和电话的类型应为 String,而不是 int

定义一个类来保存你的字段。 Records 是一种简单的方法。

record Person ( String name , int age , String phone ) 

声明您的列表以保存该类的对象。

List< Person > list = new LinkedList<>() ;

实例化一些Person 对象,并添加到列表中。

list.add( New Person( "Alice" , 29 , "477.555.1234" ) ) ;

在上面一行中,我硬编码了一些示例数据。在您自己的代码中,您将通过与用户交互将填充的变量传递给构造函数。

list.add( New Person( name , age , phonenum ) ) ;

【讨论】:

【参考方案2】:

您可以创建一个具有名称、年龄和现象的对象,然后创建一个您在 while 循环中调用的插入方法。

在伪代码中,它看起来像这样:

public class Data  
    String name; 
    int age; 
    int phenomenon; 
    //constructor
    //getters & setters

上面的这个类将包含用户输入。您可以收集所有用户输入并将其存储在一个数组中,并使用数据数组执行插入,而不是一次插入一个对象

public void InsertData(LinkedList<Data> list, Arraylist<Data> input) 
  for(Data d: input)
   list.add(d);
   

您可以在此处详细了解链表,以了解链表的工作原理并从头开始实现您自己的链表:https://www.geeksforgeeks.org/implementing-a-linked-list-in-java-using-class/

【讨论】:

【参考方案3】:

试试这个

可能性:1

import java.util.*;

public class Naddy 
    public static void main(String[] args) 

        Scanner input = new Scanner(System.in);
        char stop = 'Y';

        LinkedList<Object> list = new LinkedList<Object>();

        while (stop != 'N') 

            System.out.println("\nEnter your name : ");
            String name = input.nextLine();
            System.out.println("\nEnter your age: ");
            int age = input.nextInt();
            System.out.println("\nEnter your phone number: ");
            long phonenum = input.nextLong();

            list.add(name);
            list.add(age);
            list.add(phonenum);
            System.out.println("Enter 'Y' to continue, 'N' to Stop: ");
            input.nextLine();
            stop = input.nextLine().charAt(0);
        

        System.out.println(list);
    

可能性:2

import java.util.*;

public class Naddy 
    public static void main(String[] args) 

        Scanner input = new Scanner(System.in);
        char stop = 'Y';

        LinkedList<User> list = new LinkedList<User>();

        while (stop != 'N') 

            System.out.println("\nEnter your name : ");
            String name = input.nextLine();
            System.out.println("\nEnter your age: ");
            int age = input.nextInt();
            System.out.println("\nEnter your phone number: ");
            long phonenum = input.nextLong();

            list.add(new User(name, age, phonenum));
            System.out.println("Enter 'Y' to continue, 'N' to Stop: ");
            input.nextLine();
            stop = input.nextLine().charAt(0);
        

        System.out.println(list);
    


class User 
    private String name;
    private int age;
    private long phonenum;

    public User() 
    

    public User(String name, int age, long phonenum) 
        this.name = name;
        this.age = age;
        this.phonenum = phonenum;
    

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

    public int getAge() 
        return age;
    

    public void setAge(int age) 
        this.age = age;
    

    public long getPhonenum() 
        return phonenum;
    

    public void setPhonenum(long phonenum) 
        this.phonenum = phonenum;
    

    @Override
    public String toString() 
        return "User [age=" + age + ", name=" + name + ", phonenum=" + phonenum + "]";
    


【讨论】:

以上是关于如何将一堆数据添加到链表中的主要内容,如果未能解决你的问题,请参考以下文章

C语言中如何将文件中的数据读取到链表中

编写程序,建立一个带有节点的单向链表,输入字符串,并按从小到大顺序组织到链表中

从文件读数据插入到链表

如何实现一个LRU算法?

C语言怎么把文件的内容读到链表里面?

数据结构第三章:不带头结点的单链表操作