将节点添加到 Java 中的循环双向链表
Add Nodes to Circular Doubly Linked List in Java
我试图创建并打印一个循环双向链表,其中包含保存字母表中每个字母值的节点。
到目前为止,这是我的代码:
CircularDoublyList.java
public static void main(String[] args)
{
CDLL<Character> head = null;
CDLL<Character> tail = null;
CDLL <Character> p = null;
for(char c = 'A'; c <= 'Z'; c++) {
p = new CDLL<Character>(c, null, null);
if (head == null)
{
p.setNext(p);
p.setPrevious(p);
head = p;
tail = head;
}
else
{
p.setPrevious(tail);
tail.setNext(p);
head.setPrevious(p);
p.setNext(head);
head = p;
}
}
print(p);
}
public static void print(CDLL<Character> list) {
String str = "";
while(list != null) {
str += list.getPrevious().getValue() + " ";
list = list.getPrevious();
}
System.out.print(str);
}
问题: 我试过打印列表,但似乎什么也没有显示,控制台中也没有错误消息。任何帮助,将不胜感激。
嗯,因为列表是循环的,所以代码:
while(list != null) {
str += list.getPrevious().getValue() + " ";
list = list.getPrevious();
}
会继续兜圈子,不会停下来。
只需将您的方法更改为在再次找到第一个节点时停止:
public static void print(CDLL<Character> list) {
String str = "";
CDLL<Character> first = null;
while (true) {
str += list.getPrevious().getValue() + " ";
if (first == null)
first = list.getPrevious();
else if (first == list.getPrevious())
break;
list = list.getPrevious();
}
System.out.print(str);
}
我试图创建并打印一个循环双向链表,其中包含保存字母表中每个字母值的节点。
到目前为止,这是我的代码:
CircularDoublyList.java
public static void main(String[] args)
{
CDLL<Character> head = null;
CDLL<Character> tail = null;
CDLL <Character> p = null;
for(char c = 'A'; c <= 'Z'; c++) {
p = new CDLL<Character>(c, null, null);
if (head == null)
{
p.setNext(p);
p.setPrevious(p);
head = p;
tail = head;
}
else
{
p.setPrevious(tail);
tail.setNext(p);
head.setPrevious(p);
p.setNext(head);
head = p;
}
}
print(p);
}
public static void print(CDLL<Character> list) {
String str = "";
while(list != null) {
str += list.getPrevious().getValue() + " ";
list = list.getPrevious();
}
System.out.print(str);
}
问题: 我试过打印列表,但似乎什么也没有显示,控制台中也没有错误消息。任何帮助,将不胜感激。
嗯,因为列表是循环的,所以代码:
while(list != null) {
str += list.getPrevious().getValue() + " ";
list = list.getPrevious();
}
会继续兜圈子,不会停下来。
只需将您的方法更改为在再次找到第一个节点时停止:
public static void print(CDLL<Character> list) {
String str = "";
CDLL<Character> first = null;
while (true) {
str += list.getPrevious().getValue() + " ";
if (first == null)
first = list.getPrevious();
else if (first == list.getPrevious())
break;
list = list.getPrevious();
}
System.out.print(str);
}