这是我的代码。但是当我运行它而不是打印列表时,它给了我这样的东西“DoublyLinkedList $ Node @ 3cd1a2f1Item:”。我不知道如何解决它。我非常信任我。请有人帮忙吗。谢谢:)
public class DoublyLinkedList<Item extends Comparable>{
class Node{
private Item item;
private Node next;
private Node prev;
public Node getNext() {
return next;
}
public Node getPrev(){
return prev;
}
public Item getItem(){
return item;
}
public void setNext(Node next) {
this.next = next;
}
public void setPrev(Node prev){
this.prev= prev;
}
public void setItem(Item item){
this.item = item;
}
}
private Node head;
private int numberOfEelements;
public void sortedAdd(Item newItem) {
if (head == null) {
head = new Node();
head.setItem(newItem);
return;
}
Node dummy = head;
Node current = dummy.getNext();
while ( current!= null && (newItem.compareTo(current.getItem()) > 0) && (current != dummy))
current = current.getNext();
Node temp = new Node();
temp.setNext(current);
if (current == null) {
current = new Node();
current.setItem(newItem);
return;
}
temp.setPrev(current.getPrev());
(current.getPrev()).setNext(temp);
current.setPrev(temp);
temp.setItem(newItem);
++numberOfEelements;
}
public void sortedRemove(Item newItem) {
if (head == null) {
head = new Node();
head.setItem(newItem);
return;
}
Node dummy = head;
Node current = dummy.getNext();
while(current!= null && (newItem.compareTo(current.getItem()) !=0) && (current!= dummy))
current = current.getNext();
if (current == null) {
current = new Node();
current.setItem(newItem);
return;
}
if (newItem.equals(current.getItem())) {
(current.getPrev()).setNext(current.getNext());
(current.getNext()).setPrev(current.getPrev());
--numberOfEelements;
}
}
@Override
public String toString(){
Node current = head;
StringBuilder sb = new StringBuilder();
while(current != null){
sb.append(current).append("Item: " + " ");
current = current.getNext();
}
return sb.toString();
}
public static void main(String[] args) {
DoublyLinkedList<Integer> list = new DoublyLinkedList<Integer>();
list.sortedAdd(1);
list.sortedAdd(5);
list.sortedAdd(7);
list.sortedAdd(9);
list.sortedAdd(3);
list.sortedAdd(2);
list.sortedRemove(3);
System.out.println(list.toString());
}
}
答案 0 :(得分:4)
您的Node
班级应该覆盖toString()这样的方法:
public String toString() {
return null != item ? item.toString() : null;
}
答案 1 :(得分:0)
将toString()添加到Node,例如:
public String toString() {
return null != item ? item.toString() : null;
}
并修复sortedAdd(),例如:
public void sortedAdd(Item newItem) {
// new list
if (head == null) {
head = new Node();
head.setItem(newItem);
++numberOfEelements;
return;
}
Node current = head;
Node prev = null;
while (current != null && (newItem.compareTo(current.getItem()) > 0)) {
prev = current;
current = current.getNext();
}
// the last
if (current == null) {
current = new Node();
current.setItem(newItem);
current.setPrev(prev);
prev.setNext(current);
++numberOfEelements;
return;
}
//the first
if (prev == null){
prev = new Node();
prev.setItem(newItem);
current.setPrev(prev);
prev.setNext(current);
head = prev;
++numberOfEelements;
return;
}
Node temp = new Node();
temp.setNext(current);
temp.setPrev(current.getPrev());
(current.getPrev()).setNext(temp);
current.setPrev(temp);
temp.setItem(newItem);
++numberOfEelements;
}