首先是存储节点信息的数据类
package com.list;
public class Node {
Node next=null;
int data;
public Node(int data){
this.data=data;
}
}
链表的基本操作
package com.list;
public class MyLinkedList {
Node head=null;
//插入数据
public void addNode(int d){
Node newNode=new Node(d);
if(head==null){
head=newNode;
return;
}
Node tmp=head;
while(tmp.next!=null){
tmp=tmp.next;
}
tmp.next=newNode;
}
//删除第index个结点
public boolean deleteNode(int index){
if(index<1||index>length()){
return false;
}
//删除第一个元素
if(index==1){
head=head.next;
return true;
}
int i=1;
Node preNode=head;
Node curNode=preNode.next;
while(curNode!=null){
if(i==index){
preNode.next=curNode.next;
return true;
}
preNode=curNode;
curNode=curNode.next;
i++;
}
return true;
}
//返回结点的长度
public int length(){
int length=0;
Node tmp=head;
while(tmp!=null){
length++;
tmp=tmp.next;
}
return length;
}
//对链表进行排序
public Node orderList(){
Node nextNode=null;
int temp=0;
Node curNode=head;
while(curNode.next!=null){
nextNode=curNode.next;
while(nextNode!=null){
if(curNode.data>nextNode.data){
temp=curNode.data;
curNode.data=nextNode.data;
nextNode.data=temp;
}
nextNode=nextNode.next;
}
curNode=curNode.next;
}
return head;
}
public void printList(){
Node tmp=head;
while(tmp!=null){
System.out.println(tmp.data);
tmp=tmp.next;
}
}
public static void main(String[] args) {
MyLinkedList list=new MyLinkedList();
list.addNode(5);
list.addNode(3);
list.addNode(1);
list.addNode(3);
System.out.println("listLen="+list.length());
System.out.println("before order:");
list.printList();
list.orderList();
System.out.println("after order:");
list.printList();
}
}