【问题标题】:how to accept string and Integer using doubly linked list in java?如何在java中使用双向链表接受字符串和整数?
【发布时间】:2018-02-14 07:11:25
【问题描述】:

我创建了一个使用双重喜欢列表的菜单驱动程序。该程序正在接受整数值。但我想要接受整数和字符串的程序都创建一个双向链表,其中每个节点包含一个字符串和整数的一个字符。我该如何修改代码请帮助我......?这是我的代码,

package car;

    import java.util.Scanner;

    public class DoublyLinkedList {
         public static void main(String[] args)
            {            
                Scanner scan = new Scanner(System.in);
                /* Creating object of linkedList */
                linkedList list = new linkedList(); 
                System.out.println("Doubly Linked List Test\n");          
                char ch;
                /*  Perform list operations  */
                do
                {
                    System.out.println("\nDoubly Linked List Operations\n");
                    System.out.println("1. insert at begining");
                    System.out.println("2. insert at end");
                    System.out.println("3. insert at position");
                    System.out.println("4. delete at position");
                    System.out.println("5. check empty");
                    System.out.println("6. get size");

                    int choice = scan.nextInt();            
                    switch (choice)
                    {
                    case 1 : 
                        System.out.println("Enter integer element to insert");
                        list.insertAtStart( scan.nextInt() );                     
                        break;                          
                    case 2 : 
                        System.out.println("Enter integer element to insert");
                        list.insertAtEnd( scan.nextInt() );                     
                        break;                         
                    case 3 : 
                        System.out.println("Enter integer element to insert");
                        int num = scan.nextInt() ;
                        System.out.println("Enter position");
                        int pos = scan.nextInt() ;
                        if (pos < 1 || pos > list.getSize() )
                            System.out.println("Invalid position\n");
                        else
                            list.insertAtPos(num, pos);
                        break;                                          
                    case 4 : 
                        System.out.println("Enter position");
                        int p = scan.nextInt() ;
                        if (p < 1 || p > list.getSize() )
                            System.out.println("Invalid position\n");
                        else
                            list.deleteAtPos(p);
                        break;     
                    case 5 : 
                        System.out.println("Empty status = "+ list.isEmpty());
                        break;            
                    case 6 : 
                        System.out.println("Size = "+ list.getSize() +" \n");
                        break;                         
                    default : 
                        System.out.println("Wrong Entry \n ");
                        break;   
                    }    
                    /*  Display List  */ 
                    list.display();
                    System.out.println("\nDo you want to continue (Type y or n) \n");
                    ch = scan.next().charAt(0);    

                } while (ch == 'Y'|| ch == 'y');               
            }
        }

【问题讨论】:

  • 您是在谈论将IntegerString 数据类型作为每个节点的数据吗?如果是,则将您的 LinkedList 变量更新为 LinkedList&lt;Object&gt; list = new LinkedList()
  • 你实例化了一个除了你之外所有人都不知道的类的对象:list = new linkedList() - 很难给出比智凯更具体的建议。

标签: java algorithm data-structures doubly-linked-list


【解决方案1】:

其中每个节点包含一个字符串和整数的一个字符

所以你希望每个节点有两种数据类型...

你可以创建你的支持类Pair

public class Pair<T, U> {
    private T t;
    private U u;

    // constructors, getters, setters, equals and hashcode ...

    public static <T, U> Pair<T, U> of(final T t, final U u) {
        return new Pair<>(t, u);
    }
}

然后有

final List<Pair<String, Integer>> list = new LinkedList<>();
list.add(Pair.of("string", 4));
// ...


Pair<String, Integer> pair = list.get(9);

【讨论】:

    猜你喜欢
    • 2022-12-04
    • 2021-05-31
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2013-05-04
    相关资源
    最近更新 更多