根据您的要求修改insert(T x)方法,使得不改变程序运行结果。下面是修改后的代码:
public class DoublyList<T> {
public DoubleNode<T> head;
public DoublyList() {
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() + "(";
DoubleNode<T> p = this.head.next;
while (p != null) {
str += p.data.toString() + ((p.next != null) ? "," : "");
p = p.next;
}
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);
front.next.prev=q;
front.next=q;
return q;
}
public DoubleNode<T> insert(T x)
{
if(x==null)
return null;
DoubleNode <T> q=new DoubleNode<T>(x,this.head.prev,this.head);
this.head.prev.next=q;
this.head.prev=q;
return q;
}
public DoublyList(DoublyList<T> list)
{
this();
DoubleNode<T> rear = this.head;
for(DoubleNode<T> p = list.head.next; p != null; p = p.next)
{
DoubleNode<T> q = new DoubleNode(p.data, rear, null);
rear.next = q;
q.prev = rear;
rear = rear.next;
}
}
public void concat(DoublyList<T> list) {
DoubleNode<T> rear = this.head;
while (rear.next != null) {
rear = rear.next;
}
rear.next = list.head.next;
if (list.head.next != null) {
list.head.next.prev = rear;
}
}
public void addAll(DoublyList<T> list)
{
this.concat(new DoublyList<T>(list));
}
public DoublyList<T> union(DoublyList<T> list) {
DoublyList<T> result = new DoublyList<>(this);
result.addAll(list);
return result;
}
public static void main(String[] args) {
DoublyList<Integer> list1 = new DoublyList<Integer>();
DoublyList<Integer> list2 = new DoublyList<Integer>();
for (int i = 1; i <= 5; i++)
list1.insert(i);
for (int i = 6; i <= 10; i++)
list2.insert(i);
System.out.println(list1.toString());
System.out.println(list2.toString());
list1.addAll(list2);
System.out.println(list1.toString());
}
}
修改后的代码中,insert(T x)方法已经按照您的要求进行了修改。
内容由零声教学AI助手提供,问题来源于学员提问




