【问题标题】:Array of LinkedList with multiple values in Java [closed]Java中具有多个值的LinkedList数组[关闭]
【发布时间】:2021-04-08 13:40:50
【问题描述】:

我正在尝试创建一个包含 3 个独立链表的数组或 ArrayList。

假设我有一系列部门(销售、媒体、工作人员) 每个元素都是名称、职务、id 和工资率的循环链接。

例子:

Sales:
Node 1: Name Title       ID    Payrate
        Mary Salesperson 1378 25.46

Node 2: Name Title       ID    Payrate
        Mary Salesperson 1364 20.13

Media:
Node 1: Name Title       ID    Payrate
        John Designer    563   30.50

Node 2: Name  Title       ID    Payrate
        Chris Designer    586   563

我希望能够检索特定链接列表中的节点,例如 Departments(Sales).next 等。这是我当前的代码:

public class Circle{
    
    public static class CircularLinkedList {
        private Node head = null;
        private Node tail = null;
        private int length;
    
        class Node{
            private Node next;
            private String deptNameIn;
            private String empNameIn;
            private String title;
            private int id;
            private float payrate;
            
            public Node(String deptNameIn, String empNameIn, String title, int id, float payrate) {
                this.deptNameIn = deptNameIn;
                this.empNameIn = empNameIn;
                this.title = title;
                this.id = id;
                this.payrate = payrate;
            }
        }

        public CircularLinkedList() {
            length = 0;
        }
        
        public void insertNodeRight(String deptNameIn, String empNameIn, String title, int id, float payrate) {
            Node newNode = new Node(deptNameIn, empNameIn, title, id, payrate);
            
            if (head == null) {
                head = newNode;
            } else {
                tail.next = newNode;
            }
            tail = newNode;
            tail.next = head;
            
            length++;
            
        }
        
        public static CircularLinkedList createCircularLinkedList() {
            CircularLinkedList cll = new CircularLinkedList();
        
            cll.insertNodeRight("Sales", "Mary", "Sales_person", 568, (float) 12.50);
            cll.insertNodeRight("Sales", "Mary", "Sales_person", 589, (float) 25);
            cll.insertNodeRight("Sales", "Vallerie", "Manager", 123, (float) 30);
            
            return cll;
        }

   }
    
    public static void main(String[] args) {
        CircularLinkedList cll = CircularLinkedList.createCircularLinkedList();
        
        
    }
    
}

还有两个旁注,我目前可以从最右边插入,但我如何从最左边插入。另外,如何删除节点?我在网上看到的所有内容都显示删除一个只有一个值的节点,但我有多个值。

【问题讨论】:

    标签: java linked-list circular-list


    【解决方案1】:

    姓名、职务、身份证和工资的循环链接。

    另外,如何删除节点?我在网上看到的所有内容都显示删除一个只有一个值的节点,但我有多个值。

    不,你没有。你有一个节点对象的循环链表。您的链接列表由 节点对象 组成 - 而不是“多个值”。

    一旦您对此有所了解,您会看到在网上搜索“如何在 Java 中编写链接列表”时找到的所有数以千计的博客文章和教程在这里同样适用。

    如何在开头插入一个新节点?

    好吧,考虑一下。在“前面”添加一个新节点后,head 需要指向这个新节点,而新节点的 next 需要指向以前的头部。

    当然,长度也必须增加。它与您已经拥有的 insertNodeRight 的代码完全相同,只是翻转头/尾和下一个/上一个。

    删除节点也是同样的原理。想想你的链表的头/尾指针是什么开始的,它们需要变成什么,列表中的下一个/上一个指针是什么开始的,它们需要变成什么。如果你愿意,可以在纸上画出来。

    一旦你想通了,只需编写符合你草图的代码即可;对于这样的练习,这很简单,您的 insertNodeRight 代码显示了方法。

    【讨论】:

    • 嗯,与其说是“删除头部”,不如说是“让头部指向其他东西(head.next 曾经指向的东西)。链表的状态完全由头/尾定义,其中所有内容的下一个/上一个节点,链表上的所有操作都可以用它来表示。删除、添加 - 只是将内容分配给 head/tail 和 next/prev 字段。
    猜你喜欢
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2021-10-23
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多