天天看點

連結清單的基本操作 java_用Java實作單連結清單的基本操作

packagemars;//單連結清單添加,删除節點

public classListNode {privateNode head;publicListNode(){

head=null;

}//在連結清單前添加節點

public void addpre(intdvalue){

Node n=newNode(dvalue);if(head==null){

head=n;

}else{

n.next=head;

head=n;

}

}//在連結清單後添加節點

public void add(intdvalue){

Node n=newNode(dvalue);

Node current=head;while(current!=null){if(current.next==null){

current.next=n;return;

}

current=current.next;

}

}//删除值為dvalue的節點

public Node delete(intdvalue){

Node current=head;if(head.value==dvalue){

head=head.next;returncurrent;

}while(current.next!=null){if(current.next.value==dvalue){

Node temp=current.next;

current.next=temp.next;returntemp;

}

current=current.next;

}return null;

}//删除特定位置的節點

public Node deletepos(intpos){

Node current=head;int counter=0;if(pos==0){

head=head.next;returncurrent;

}while(current!=null){if((counter==(pos-1))&&(current.next!=null)){

Node temp=current.next;

current.next=temp.next;returntemp;

}

current=current.next;

counter++;

}return null;

}//單連結清單轉置

public voidreverse(){

Node a=head;if(a==null){return;

}

Node b=head.next;if(b==null){return;

}

Node c=head.next.next;

a.next=null;while(c!=null){

b.next=a;

a=b;

b=c;

c=c.next;

}

b.next=a;

head=b;

}//輸對外連結表資訊

public voidprint(){

Node current=head;while(current!=null){

System.out.println(current.value);

current=current.next;

}

}public static voidmain(String[] args){

ListNode l=newListNode();

l.addpre(3);

l.addpre(2);

l.addpre(1);

l.add(7);

l.add(8);

l.add(9);

l.delete(1);

l.deletepos(4);

l.reverse();

l.print();

}

}classNode{publicNode next;public intvalue;publicNode(){

next=null;

}public Node(intv){

value=v;

}

}