package algorithm;
import java.util.Scanner;
public class ListTry {
private ListTry next = null;
private int data;
ListTry() {
next = null;
data = -1;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public void setNext(ListTry next) {
this.next = next;
}
public ListTry getNext() {
return this.next;
}
public void full() {
Scanner sc = new Scanner(System.in);
ListTry q = this;
System.out.println("请进行输入:(停止请输入exit)");
String h;
while (!("exit".equals(h = sc.next()))) {
q.setNext(new ListTry());
q.getNext().setData(Integer.parseInt(h));
q = q.getNext();
}
sc.close();
}
public void printAll() {
ListTry q = new ListTry();
q = this;
while (q.getNext() != null) {
System.out.println(q.getNext().getData());
q = q.getNext();
}
}
public static void delete(ListTry pre, ListTry del) {
// ListTry q = new ListTry();
// q = del.getNext();
// pre.setNext(del.getNext());
// del = q;
pre.setNext(pre.getNext().getNext());
// del = pre.getNext();
}
public static void main(String[] args) throws InterruptedException {
ListTry list1 = new ListTry();
list1.full();
ListTry q = list1.getNext();
ListTry p = list1;
list1.printAll();
System.out.println("---------------");
while (q != null) {
System.out.println("now " + q.getData());
if (q.getData() == 250) {
System.out.println("shanchu---");
ListTry.delete(p, q);
q = p.getNext();
} else {
q = q.getNext();
p = p.getNext();
}
}
list1.printAll();
}
}
删除操作那里出了一点问题,已解决,问题在于java是值传递,不是引用
画个图表达一下