请参考以下修改后的代码,将循环双链表改为双链表:
package dataStructure;
public class DoublyList2<T> {
public DoubleNode<T> head;
public DoublyList2() {
this.head = new DoubleNode<T>();
this.head.prev = null;
this.head.next = null;
}
public boolean isEmpty() {
return this.head.next == null;
}
public String toString() // 遍历
{
String str = this.getClass().getName() + "(";
for (DoubleNode<T> p = this.head.next; p != null; p = p.next)
str += p.data.toString() + ((p.next != null) ? "," : "");
return str + ")";
}
public DoubleNode<T> insert(int i, T x) // 插入
{
if (x == null)
return null;
DoubleNode<T> front = this.head;
for (int j = 0; front.next != null && j < i; j++)
front = front.next;
DoubleNode<T> q = new DoubleNode<T>(x, front, front.next);
if(front.next != null)
front.next.prev = q;
front.next = q;
return q;
}
public DoubleNode<T> insert(T x) {
if (x == null)
return null;
DoubleNode<T> newNode = new DoubleNode<T>(x, null, head);
if(head != null)
head.prev = newNode;
head = newNode;
return newNode;
}
public void addAll(DoublyList2<T> list) {
DoubleNode<T> lastNodeOfFirstList= this.head;
while(lastNodeOfFirstList.next != null) {
lastNodeOfFirstList = lastNodeOfFirstList.next;
}
for (DoubleNode<T> p = list.head; p != null; p = p.next) {
DoubleNode<T> newNode = new DoubleNode<T>(p.data, lastNodeOfFirstList, null);
lastNodeOfFirstList.next = newNode;
lastNodeOfFirstList = newNode;
}
}
public static void main(String[] args) {
DoublyList2<Integer> list1 = new DoublyList2<Integer>();
DoublyList2<Integer> list2 = new DoublyList2<Integer>();
for (int i=6; i<=10; i++)
list1.insert(i);
for (int i=11; i<=15; i++)
list2.insert(i);
System.out.println(list1.toString());
System.out.println(list2.toString());
list1.addAll(list2);
System.out.println(list1.toString());
}
}
这样修改后的代码将循环双链表改为了双链表,同时保持了原有的方法不变。
内容由零声教学AI助手提供,问题来源于学员提问




