有序链表:
public class Link {
public long value;
public Link next;
public Link(long n){
value=n;
}
public void display(){
System.out.println(value);
}
}
//把link[]中的link插入到有序链表中,然后依次输出到link[]
public class LinkInsertApp {
public static void main(String[] args){
int size=10;
Link[] arr=new Link[size];
for(int i=0;i<size;i++){
int n=(int)(java.lang.Math.random()*99);
Link l=new Link(n);
arr[i]=l;
}
System.out.println("unsorted arr:");
for(int i=0;i<size;i++){
arr[i].display();
}
System.out.println("sorted arr:");
sortedLink list=new sortedLink(arr);
list.displayLink();
System.out.println("...");
for(int i=0;i<size;i++){
arr[i]=list.remove();
}
for(int i=0;i<size;i++){
arr[i].display();
}
}
}
public class sortedLink {
private 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 pre=null;
Link current=first;
while(current!=null && k.value>current.value){
pre=current;
current=current.next;
}
if(pre==null){
first=k;
}else{
pre.next=k;
}
k.next=current;
}
public void insert(long value){
Link a=new Link(value);
Link pre=null;
Link current=first;
while(current!=null &&value>current.value){
pre=current;
current=current.next;
}
if(pre==null){
first=a;
}else{
pre.next=a;
}
a.next=current;
}
public Link remove(){
Link temp=first;
if(first==null) {
System.out.println("Empty Error");
return null;
}
else {
first=first.next;
return temp;}
}
public void displayLink(){
System.out.println("sortedLink:f->l");
Link current=first;
while(current!=null){
System.out.println(current.value);
current=current.next;
}
}
}
public class sortedLinkApp {
public static void main(String[] args){
sortedLink arr=new sortedLink();
arr.insert(32);
arr.insert(11);
arr.insert(98);
arr.insert(5);
arr.remove();
arr.remove();
arr.remove();
arr.remove();
arr.remove();
arr.displayLink();
}
}
双向链表:
public class Link {
public Link next;
public Link prev;
public long value;
public Link(long d){
value=d;
}
public void display(){
System.out.println(value);
}
}
public class doubleLink {
private Link first;
private Link last;
public doubleLink(){
first=null;
last=null;
}
public void insertFirst(long data){
Link temp=new Link(data);
if(first==null){
last=temp;
}else{
first.prev=temp;
temp.next=first;
}
first=temp;
}
public void insertLast(long data){
Link temp=new Link(data);
if(first==null){
first=temp;
}else{
last.next=temp;
temp.prev=last;
}
last=temp;
}
public Link deleteFirst(){
Link temp=first;
if(first==null){
System.out.println("Empty Error");
}else if(first.next==null){
last=null;
first=null;
}else{
first.next.prev=null;
}
first=first.next;
return temp;
}
public Link deleteLast(){
Link temp=last;
if(first==null){
System.out.println("Empty Error");
}else if(first.next==null){
last=null;
first=null;
}else{
last.prev.next=null;
}
last=last.prev;
return temp;
}
public boolean insertAfter(long key,long data){
Link current=first;
while(current.value!=key){
current=current.next;
if(current==null) return false;
}
Link ll=new Link(data);
if(current==last){
ll.next=null;
last.next=ll;
last=ll;
}else{
ll.next=current.next;
current.next.prev=ll;
}
ll.prev=current;
current.next=ll;
return true;
}
public Link deleteKey(long key){
Link current=first;
while(current.value!=key){
current=current.next;
if(current==null) return null;
}
if(current==first) {
first=first.next;
}else{
current.prev.next=current.next;
}
if(current==last){
last=last.prev;
}else{
current.next.prev=current.prev;
}
return current;
}
public boolean isEmpty(){
return first==null;
}
public void dispalyForward(){
Link current=first;
while(current!=null){
current.display();
current=current.next;
}
}
public void displayBackwards(){
Link current=last;
while(current!=null){
current.display();
current=current.prev;
}
}
}
public class doubleLinkApp {
public static void main(String[] args){
doubleLink arr=new doubleLink();
arr.insertFirst(12);
arr.insertFirst(11);
arr.insertLast(13);
arr.insertAfter(13, 14);
arr.deleteLast();
arr.insertAfter(12, 100);
arr.deleteKey(13);
arr.dispalyForward();
System.out.println();
arr.displayBackwards();
}
}