Singly linked list algorithm implemented by Java

Jeff Lee blog:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),retain the url when reproduced ! Thanks

 

Linked list is a normal data structure.here I show how to implements it.

Step 1. Define a structure

public class ListNode
{
	public ListNode Next;
	public int Value;
	public ListNode(int NewValue)
	{
		Value = NewValue;
	}
}

Step 2. implements the functions

public class Clist
{
	private ListNode Head;
	private ListNode Tail;
	private ListNode Current;
	private int ListCountValue;
	
	public Clist()
	{
		ListCountValue = 0;
		Head = null;
		Tail = null;
	}
	
	public void Append(int DataValue)
	{
		ListNode NewNode = new ListNode(DataValue);
		if (ListCountValue == 0)
		{
			Head = NewNode;
			Tail = NewNode;
		}
		else
		{
			Tail.Next = NewNode;
			Tail = NewNode;
		}
		Current = NewNode;
		ListCountValue += 1;
	}
	
	public void Insert(int DataValue)
	{
		ListNode NewNode = new ListNode(DataValue);
		if (ListCountValue == 0)
		{
			Append(DataValue);
			return;
		}
		if(Current == Tail)
		{
			Tail.Next = NewNode;
			Tail = NewNode;
			Current = Tail;
			ListCountValue += 1;
		}
		if((Current != Head) && (Current != Tail))
		{
			NewNode.Next = Current.Next;
			Current.Next = NewNode;
			Current = NewNode;
			ListCountValue += 1;
		}
	}
	
	public void Delete()
	{
		if(ListCountValue != 0)
		{
			if(Current == Head)
			{
				Head = Current.Next;
				Current = Head;
				ListCountValue -= 1;
				return;
			}
			else
			{
				Current = Current.Next;
				ListCountValue -= 1;
			}
		}
	}
	
	public void printAllListNode()
	{
		Current = Head;
		for (int i = 0; i < ListCountValue; i++)
		{
			System.out.println(Current.Value);
			Current = Current.Next;
		}
	}
}

Step 3. Test class for testing

public class Test
{

	public static void main(String[] args)
	{
		Clist clist = new Clist();
		clist.Append(12);
		clist.Append(22);
		clist.Insert(66);
		clist.Insert(33);
		clist.Delete();
		clist.printAllListNode();
	}

}

 

we will see:

12
22
66
33

你可能感兴趣的:(Algorithm)