我需要建立一个双向的LinkedList,它接受一个String并为其中的每个字符构建节点。
public class doublyLinkedlist{
private Node first;
private Node last;
public doublyLinkedList(String a){
first=new Node(a.charAt(0),null);
last=new Node(a.charAt(1),first);
}
}
因此,如果我有一个
String "ab"
,则第一个包含“ a”,最后一个包含“ b”。但这不是我想要的。我的构造函数应该能够为
char
中的每个String
构建节点。有人可以向我解释LinkedList的双重工作原理吗?谢谢。
最佳答案
您如何定义Node类?尝试像
class Node
{
String val;
Node next, prev;
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public Node getPrev() {
return prev;
}
public void setPrev(Node prev) {
this.prev = prev;
}
public Node(String v)
{
val=v;
}
您将需要添加功能来设置下一个和上一个节点。现在,在doublyLinkedlist类的构造函数中,您基本上就可以拆分输入字符串并为每个字符创建一个Node。同样,设置下一个和上一个。有帮助吗?如果需要,我可以提供更详细的代码,但我恳请您尝试。
好的,所以您的doublyLinkedlist构造函数看起来像
public doublyLinkedlist(String a) {
String [] arr = a.split("");
first = new Node(arr[0]);
last = new Node(arr[arr.length-1]);
first.setPrev(last);
last.setNext(first);
Node temp = first;
for (int i=1 ; i<arr.length-1 ; i++)
{
Node newNode = new Node(arr[i]);
temp.setNext(newNode);
newNode.setPrev(temp);
temp = temp.next;
}
//finally
temp.prev.next = temp;
}