public class Test1 {
public static void main ( String [] args) {
Test1 test1 = new Test1(); //创建一个Test1对象
MyList myList = test1.new MyList(); //用Test1对象来创建MyList对象
Node node1 = myList.new Node(10); //用MyList对象来创建Node对象
Node node2 = myList.new Node(4);
Node node3 = myList.new Node(15);
Node node4 = myList.new Node(20);
Node node5 = myList.new Node(22);
myList.add(node1); //将结点添加到链表中
myList.add(node2);
myList.add(node3);
myList.add(node4);
myList.add(node5);
myList.display(); //显示链表中的所有数据
myList.remove(2); //删除第三个结点
myList.display(); //显示删除后的链表
System.out.println(myList.getAt(1).data); //打印第二个结点的数据
}
class MyList{ //定义为非静态的内部类
private Node firstNode; //链表的头结点
private int length; //链表的长度
public MyList(){ //构造方法,初始化一个空链表
firstNode = null;
length = 0;
}
public void clear(){ //清空链表
firstNode = null;
length = 0;
}
public void add(Node d){ //在链表尾部添加一个结点
if(firstNode == null){ //如果链表为空,直接将新结点作为头结点
firstNode = d;
}else{ //否则,遍历链表,找到最后一个结点,将新结点链接到它后面
Node current = firstNode;
while(current.next != null){
current = current.next;
}
current.next = d;
}
length++; //链表长度加一
}
public void remove(int i){ //删除指定位置的结点
if(i < 0 || i >= length){ //如果位置不合法,抛出异常
throw new IndexOutOfBoundsException("Invalid index: " + i);
}else if(i == 0){ //如果位置为0,直接将头结点指向下一个结点
firstNode = firstNode.next;
}else{ //否则,遍历链表,找到要删除的结点的前一个结点,将它的next指向要删除的结点的next
Node previous = firstNode;
for(int j = 0; j < i - 1; j++){
previous = previous.next;
}
Node current = previous.next;
previous.next = current.next;
}
length--; //链表长度减一
}
public Node getAt(int i){ //获取指定位置的结点
if(i < 0 || i >= length){ //如果位置不合法,抛出异常
throw new IndexOutOfBoundsException("Invalid index: " + i);
}else{ //否则,遍历链表,找到要返回的结点,并返回它
Node current = firstNode;
for(int j = 0; j < i; j++){
current = current.next;
}
return current;
}
}
public void display(){ //显示链表中的所有数据
Node current = firstNode;
while(current != null){
System.out.print(current.data + " ");
current = current.next;
}
System.out.println();
}
class Node { //定义为非静态的内部类
private int data; //结点存储的数据
private Node next; //结点指向的下一个结点
private Node(int d){ //构造方法,初始化一个只有数据的结点
data = d;
next = null;
}
private Node(int d, Node n){ //构造方法,初始化一个有数据和下一个结点的结点
data = d;
next = n;
}
}
}
}
如图,在使用Java创建链表时出现如下错误,请问该怎么办呐
|