Java 中具有多个值的 LinkedList 数组
Array of LinkedList with multiple values in Java
我正在尝试创建一个数组或 ArrayList,其中包含 3 个单独的 linked 列表。
假设我有一系列部门(销售、媒体、船员)
每个元素都是一个循环 linked link 名称、职位、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
我希望能够检索特定 linked 列表中的节点,例如 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();
}
}
还有两个旁注,我现在可以从最右边插入,但是我怎么能从最左边插入呢。另外,如何删除节点?我在网上看到的所有内容都显示删除只有一个值的节点,但我有多个值。
circular linked link of name, title, id, and pay rate.
Also, how can I delete a node? Everything I've seen online shows deleting a node with only one value, but I have multiple values.
不,你不知道。您有一个 节点对象 的循环链表。您的链表包含 Node objects - 而不是 'multiple values'.
一旦您能全神贯注于此,您将看到在网络上搜索 'how to write a linked list in java' 时找到的所有数千篇博客文章和教程,同样适用于此处。
如何在开头插入新节点?
嗯,想想吧。在添加新节点 'at the front' 之后,head
需要指向这个新节点,而新节点的 next
需要指向以前的 head.
此外,当然,长度必须增加。它与您已有的 insertNodeRight
代码完全相同,只是翻转 head/tail 和 next/prev。
删除节点也是同样的原理。想想你的链表的 head/tail 指针是什么开始的,它们需要变成什么,你的列表中的 next/prev 指针是什么开始的,它们需要变成什么。如果你愿意,可以在纸上画出来。
一旦你想通了,只需编写代码来完成你的草图;对于这样的练习,它很简单,您的 insertNodeRight
代码指明了方向。
我正在尝试创建一个数组或 ArrayList,其中包含 3 个单独的 linked 列表。
假设我有一系列部门(销售、媒体、船员) 每个元素都是一个循环 linked link 名称、职位、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
我希望能够检索特定 linked 列表中的节点,例如 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();
}
}
还有两个旁注,我现在可以从最右边插入,但是我怎么能从最左边插入呢。另外,如何删除节点?我在网上看到的所有内容都显示删除只有一个值的节点,但我有多个值。
circular linked link of name, title, id, and pay rate.
Also, how can I delete a node? Everything I've seen online shows deleting a node with only one value, but I have multiple values.
不,你不知道。您有一个 节点对象 的循环链表。您的链表包含 Node objects - 而不是 'multiple values'.
一旦您能全神贯注于此,您将看到在网络上搜索 'how to write a linked list in java' 时找到的所有数千篇博客文章和教程,同样适用于此处。
如何在开头插入新节点?
嗯,想想吧。在添加新节点 'at the front' 之后,head
需要指向这个新节点,而新节点的 next
需要指向以前的 head.
此外,当然,长度必须增加。它与您已有的 insertNodeRight
代码完全相同,只是翻转 head/tail 和 next/prev。
删除节点也是同样的原理。想想你的链表的 head/tail 指针是什么开始的,它们需要变成什么,你的列表中的 next/prev 指针是什么开始的,它们需要变成什么。如果你愿意,可以在纸上画出来。
一旦你想通了,只需编写代码来完成你的草图;对于这样的练习,它很简单,您的 insertNodeRight
代码指明了方向。