数据结构之链表的增删操作的Java实现

链表是基本的数据结构

特点:可以用任意蚁族存储单元来存储单链表中的数据元素

   数据元素值、直接后继元素的信息-----节点

Java实现单链表的增、删、排序、获取链表长度、打印链表

package com.yaxin.linkedlist;

public class MyLinkedList {
	Node head=null; //链表头的引用
	/**
	 * 向链表中插入数据
	 * @param data
	 */
	public void addNode(int data) 
	{
		Node newNode=new Node(data);
		if(null==head)
		{
			head=newNode;
			return;
		}
		Node tmp=head;
		while(tmp.next!=null)
		{
			tmp=tmp.next;
		}
		tmp.next=newNode;
	}
	/**
	 * 删除链表中指定索引处的数据
	 * @param index
	 * @return 成功返回true 说明删除成功 否则返回false
	 */
	public boolean deleteNode(int index) 
	{
		if(index<0||index>=length())
		{
			return false;
		}
		if(index==0)
		{
			head=head.next;
			return true;
		}
		int count=1;
		Node tmp=head.next;
		while(count!=index)
		{
			tmp=tmp.next;
		}
		tmp.next=tmp.next.next;
		return true;
	}
	/**
	 * 获取链表的长度
	 * @return 返回链表的长度
	 */
	public int length()
	{
		if(null==head)
		{
			return 0;
		}
		int count=1;
		Node tmp=head;
		while(null!=tmp.next)
		{
			count++;
			tmp=tmp.next;
		}
		return count;
	}
	/**
	 * 对链表进行排序
	 * @return 返回排序后的头节点
	 */
	public Node orderList()
	{
		if(length()<1)
		{
			return null;
		}
		int i;
		Node currentNode=head;
		Node nextNode=head.next;
		while(null!=currentNode)
		{
			while(null!=nextNode)
			{
				if(currentNode.data>nextNode.data)
				{
					i=currentNode.data;
					currentNode.data=nextNode.data;
					nextNode.data=i;
				}
				nextNode=nextNode.next;
			}
			currentNode=currentNode.next;
		}
		return head;
	}
	/**
	 * 打印链表
	 */
	public void printList() 
	{
		Node tmp=head;
		while(null!=tmp)
		{
			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();
	}
	
}
class Node {
	Node next=null;
	int data;
	public Node(int data) {
		super();
		this.data = data;
	}
	
}
运行结果:

猜你喜欢

转载自blog.csdn.net/simple_man_just/article/details/51254237