首先是单链表的结点对象的创建和增删改查的方法的实现
public class Linklist {
public Node head;
public int length=0;
//打印链表
public void printlinklist(){
Node p = head;
while(p!=null){
System.out.println(p.data);
p = p.next;
}
System.out.println("长度为:"+length);
}
//判断链表是否为空
public Boolean isEmpty(){
if(head==null)
return true;
return false;
}
//尾插法添加结点
public void addLastNode(int data){
Node x = new Node(data);
if(head==null){
head=x;
length++;
return;
}
Node q=head;
while(q.next!=null)
q=q.next;
q.next =x;
length++;
}
//头插法添加结点
public void addHeadNode(int data){
Node x = new Node(data);
if(head==null){
head = x;
length++;
return;
}
x.next = head;
head = x;
length++;
}
//删除节点
public Boolean deleteNode(int index){
if(index<1||index>length)
return false;
int i=1;
Node p=head;
while(i!=(index-1)){
p=p.next;
i++;
}
p.next = p.next.next;
length--;
return true;
}
//修改结点
public Boolean updateNode(int index, int data){
if(index<1||index>length)
return false;
int i=1;
Node p =head;
while(i<index){
p=p.next;i++;}
p.data=data;
return true;
}
//向前冒泡,因为冒泡是相邻俩俩进行比较,所以容易知道,当
//一轮排序发现顺序
public void SortLinklist(){
Boolean flag = false;
Node p = head;
Node q = null;
for(int i=0;i<length-1;i++){
q=p.next;
for(int j=i;j<length-1;j++){
if(p.data>q.data){
int t = p.data;
p.data = q.data;
q.data = t;
flag=true;
}
q=q.next;
}
if(flag==false)
break;
flag=false;
p = p.next;
}
}
}
class Node{
public Node next;
public int data;
public Node(int data){
this.data = data;
}
}
单链表的冒泡排序 (Java)
public class MylinkedList {
public Linklist linklist = new Linklist();
public void testaddLastNode(){
linklist.addLastNode(12);
linklist.addLastNode(32);
linklist.addLastNode(42);
linklist.addLastNode(21);
linklist.addLastNode(62);
linklist.addLastNode(72);
linklist.printlinklist();
}
public void testaddHeadNode(){
linklist.addHeadNode(12);
linklist.addHeadNode(22);
linklist.addHeadNode(33);
linklist.addHeadNode(24);
linklist.addHeadNode(25);
linklist.addHeadNode(26);
linklist.printlinklist();
}
public void testdeleteNode(){
if(linklist.deleteNode(3)==false)
System.out.println("删除位置有误");
linklist.printlinklist();
}
public void testUpdateNode(){
if(linklist.updateNode(2, 10)==false)
System.out.println("there is a mistake in the place of deletion");
linklist.printlinklist();
}
public void testSortLinkList(){
linklist.SortLinklist();
linklist.printlinklist();
}
public static void main(String[] args) {
MylinkedList m = new MylinkedList();
m.testaddLastNode();
m.testaddHeadNode();
System.out.println("== === === === === === ");
m.testSortLinkList();
}
}