链表操作+排序---Java

public class Node {
	//结点类
	Node next;//指针域
	int data;//数据域
	Node(int data)
	{
		this.data=data;
		this.next=null;
	}
}


package javawork;

public class List {
	//链表类
	Node head;//头结点
	List()
	{
		head=new Node(0);//头结点的数据域存储链表的长度
	}
	//在链表的最后添加结点
	public void addNode(int data)
	{
		Node temp=head;
		while(temp.next!=null)
			temp=temp.next;
		head.data++;//链表的长度加一
		Node add=new Node(data);
		temp.next=add;
	}
	
	//在链表的第index个位置之前添加结点
	public boolean insertNode(int index,int data)
	{
		Node temp=head;
		int length=0;
		while(lengthindex-1 || temp==null)
		{
			System.out.println("插入位置失败!");
			return false;
		}
		head.data++;//链表长度加一
		Node flag=new Node(data);
		flag.next=temp.next;//插入结点
		temp.next=flag;
		return true;
	}
	//删除链表第index个位置的结点
	public boolean deleteNode(int index)
	{
		Node temp=head;
		int length=0;
		while(lengthindex-1 || temp.next==null)
		{
			System.out.println("删除失败!");
			return false;
		}
		head.data--;
		Node flag=temp.next;
		System.out.println("删除的结点的值为"+flag.data);
		temp.next=flag.next;
		return true;
	}
	//打印链表
	public void printList()
	{
		Node temp=head.next;
		while(temp!=null)
		{
			System.out.print(temp.data+"  ");
			temp=temp.next;
		}
		System.out.println();
	}
	//获取链表的长度
	public int lengthNode()
	{
		return head.data;
	}
	//给链表排序
	public void sort()
	{
		Node p;//p存放下一个结点
		int temp;
		//这里利用冒泡排序法根据长度确定比较的轮数,比较的轮数比链表的长度少1
		int flag=lengthNode()-1;
		while(flag>=0)
		{
			p=head.next;//冒泡法的思想,从第一个结点值与后面结点的值开始比较
			while(p.next!=null)//相邻两个结点的值依次比较,让较大的数较大的泡冒到后面去
			{
				if(p.data>p.next.data)
				{
					temp=p.data;
					p.data=p.next.data;
					p.next.data=temp;
				}
				p=p.next;
			}
			flag--;
		}
	}
}


package javawork;

public class NodeMain {

	public static void main(String args[])
	{
		List link=new List();
		int a[]= {33,56,21,9,100,101,78,1111,334,55};
		for(int i=0;i

 

你可能感兴趣的:(链表操作+排序---Java)