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
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号