更加简练的链表
使用链表排序对数据排序
顺序存储排序
运行结果:
程序代码
package cn.mzy.SumLinkedListTest;
public class SumTest {
public static void main(String[] args) {
SignalLinkedList s=new SignalLinkedList();
int arr[]=new int[10];
//产生十个1-50的随机数,把数字生成节点,并放进链表里
for(int i=0;i<10;i++) {
arr[i]=(int)(1+Math.random()*50);
Node<Integer> n=new Node<Integer>(arr[i]);
s.addByOrder(n);
}
s.showThis();
System.out.println("删除随机生成的第2个数字后!");
s.del(arr[1]);
s.showThis();
}
}
class SignalLinkedList {
// 创建一个链表
Node<Integer> head = new Node<Integer>(0);
// 查看链表
public void showThis() {
if(head.next==null) {
System.out.println("这个链表目前空!");
return;
}
Node<Integer> temp = head.next;
while (temp != null) {
if (temp.next == null) {
System.out.println(temp.toString() + ".");
} else {
System.out.print(temp.toString() + ",");
}
temp = temp.next;
}
}
// 添加节点
public void add(Node<Integer> newNode) {
Node<Integer> temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = newNode;
}
// 删除
public void del(int value) {
Node<Integer> temp = head;
int a = 1;
while (temp.next != null) {
if (temp.next.e == value) {
a = 0;
break;
}
temp = temp.next;
}
if (a == 1) {
System.out.println("没有这个元素");
} else {
if (temp.next.next == null) {
temp.next = null;
} else {
temp.next = temp.next.next;
}
}
}
// 按照指定位置添加元素
public void addByOrder(Node<Integer> newNode) {
Node<Integer> temp = head;
while (true) {
if (temp.next == null) {// 已经找到最后
temp.next = newNode;
return;
}
// 假设允许重复
if (newNode.e <= temp.next.e) {
newNode.next = temp.next;
temp.next = newNode;
return;
} else {
temp = temp.next;
}
}
}
}
class Node<E> {
public E e;
@SuppressWarnings("unused")
public Node<E> next;
public Node(E eml) {
this.e = eml;
}
public String toString() {
return "" + e;
}
}