package listDemo;
public class MyList {
private Node header = null;
private Node last = null;
private int size;
public void addSort(int data) {
Node current = new Node(data);
if (header == null) {
header = current;
last = header;
} else if (size == 1) {
if (header.data > current.data) {
current.next = header;
last = header;
header = current;
} else {
header.next = current;
last = current;
}
} else {
Node next = header.next;
Node prv = null;
while (null != next && data > next.data) {
prv = next;
next = next.next;
}
if (next != null) {
current.next = next;
prv.next = current;
} else {
last.next = current;
last = current;
}
}
size++;
}
public int size() {
return size;
}
private class Node {
private int data;
private Node next;
Node(int data) {
this.data = data;
}
}
// 链表的toString方法
public String toString() {
StringBuilder str = new StringBuilder(size * 2 + 1);
if (size == 0) {
str.append("[]");
} else {
Node node = this.header;
str.append("[");
for (int i = 0; i < size; i++) {
if (i != size - 1) {
str.append(node.data + ",");
node = node.next;
} else {
str.append(node.data + "]");
}
}
}
return str.toString();
}
public MyList revoser() {
Node p;
Node q;
Node r;
if (header == null) {
return null;
} else if (size == 1) {
return this;
} else {
p = header;
q = p.next;
while (null != q) {
r = q.next;
q.next = p;
p = q;
q = r;
}
}
header = p;
return this;
}
public static void main(String[] args) {
MyList list = new MyList();
list.addSort(2);
list.addSort(1);
list.addSort(4);
list.addSort(6);
list.addSort(3);
list.addSort(5);
System.out.println(list.toString());
list.revoser();
System.out.println(list.toString());
}
}