java版資料結構與演算法—有序連結串列
阿新 • • 發佈:2018-11-29
package com.zoujc.sortLink;
/**
* 有序連結串列
*/
class Link {
public int dData;
public Link next;
public Link(int dd){
dData = dd;
}
public void display(){
System.out.print(dData + " ");
}
}
class SortedLink{
public Link first;
public SortedLink(){
first = null;
}
public SortedLink(Link[] linkArr){
first = null;
for (int i=0;i<linkArr.length;i++){
insert(linkArr[i]);
}
}
public void insert(Link k){
Link previous = null;
Link current = first;
while (current != null && k.dData > current.dData){
previous = current;
current = current.next;
}
if(previous == null){
first = k;
}else {
previous.next = k;
}
k.next = current;
}
public Link remove(){
Link temp = first;
first = first.next;
return temp;
}
public void display(){
System.out.print("List:");
Link current = first;
while (current != null){
current.display();
current = current.next;
}
System.out.println();
}
}
class LinkInsertionSortApp{
public static void main(String[] args){
int size = 10;
Link[] links = new Link[size];
for (int i=0;i<size;i++){
int n = (int) (Math.random()*99);
Link link = new Link(n);
links[i] = link;
}
System.out.print("未排序:");
for (int i=0; i<size;i++){
System.out.print(links[i].dData + " ");
}
System.out.println("");
SortedLink sortedLink = new SortedLink(links);
sortedLink.display();
System.out.print("按順序刪除:");
for (int i=0;i<size;i++){
links[i] = sortedLink.remove();
}
for (int i=0; i<size;i++){
System.out.print(links[i].dData + " ");
}
System.out.println("");
}
}