它是一個 Double 型別的雙向鏈表。我的其他方法不會與測驗儀一起運行,因為他們說“this.head”或“this.current”為空,所以我假設 add 方法有問題,因為它首先使用。它正在拋出任何幫助表示贊賞!
{
private class ListNode
{
double data;
ListNode prev;
ListNode next;
public ListNode(Double aData, ListNode foreWards, ListNode backWards)
{
data = aData;
next = foreWards;
prev = backWards;
}
}
private ListNode head;
private ListNode current;
private ListNode previous;
private ListNode tail;
public DoubleDoubleLL()
{
head = current = previous = null;
}
public void add(Double aData)
{
ListNode newNode = new ListNode(aData, null, null);
if(head == null)
{
head = current = tail = newNode;
tail = current = newNode;
return;
}
else
{
tail.next = newNode;
newNode.prev = tail;
tail = newNode;
tail.next = null;
ListNode temp = head;
temp = temp.next;
temp.next = newNode;
temp.prev = newNode;
}
}
}
uj5u.com熱心網友回復:
首先,在第一條和最后一條記錄的情況下,next 或 prev == null 是正常的。這就是我們指示串列開始和結束的方式。
至于您的添加方法,是的,它是錯誤的:)
請參閱此處的示例,我添加了一個帶有一些列印輸出的 main 方法,以便您了解它是如何作業的。
public class DoubleLinkedList {
private ListNode head;
private ListNode tail;
private int size = 0;
private class ListNode {
double data;
ListNode prev;
ListNode next;
public ListNode(double data, ListNode prev, ListNode next) {
this.data = data;
this.prev = prev;
this.next = next;
}
public String toString(ListNode node) {
return node == null ? "NIL" : "" node.hashCode();
}
public String toString() {
return String.format("ListNode [%d] [data: %f, next: %s, prev: %s]", this.hashCode(), this.data, this.toString(this.next),this.toString(this.prev));
}
}
public DoubleLinkedList() {
}
public void add(double data) {
this.size ;
ListNode node = new ListNode(data, this.tail, null);
if (this.tail != null) {
this.tail.next = node;
}
this.tail = node;
if (this.head == null) {
this.head = node;
}
}
public String toString(ListNode node) {
return node == null ? "NIL" : "" node.hashCode();
}
public String toString() {
return String.format("DoubleLinkedList [%d] [size: %d, head: %s, tail: %s] (%s)", this.hashCode(), this.size, toString(this.head), toString(this.tail), this.printList());
}
private String printList() {
StringBuilder sb = new StringBuilder();
ListNode next = this.head;
while (next != null) {
sb.append("\n\t").append(next.toString()).append(",");
next = next.next;
}
return sb.toString();
}
public static void main(String[] args) {
DoubleLinkedList list = new DoubleLinkedList();
System.out.println(list.toString());
list.add(11);
System.out.println(list.toString());
list.add(12);
System.out.println(list.toString());
// adding two at once
list.add(13);
list.add(14);
System.out.println(list.toString());
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/514752.html
標籤:爪哇蚀链表添加双向链表
