Find the nth to last element of a singly linked list

Question:

Implement an algorithm to find the nth to last (倒数第n个) element of a singly linked list.

Analyze:

we can simply use two pointers, and fix one position of the pointer and set it to the head of the list, and then, move another pointer to the place where the distance between these two pointers is n. Then, we move both pointers at the same time until one of the pointer reaches the end of the list.

Code:

public static Node nthtoLastNode(Node head, int n) {
	Node node = head;
	int count = n - 1; //be aware!
	//move the pointer to the place where
	//the distances between these two pointers is n
	while (count >= 1 && node.next != null) {
		count--;
		node = node.next;
	}
	//the length of the list is less than n
	if (count != 0) return null;
	// move the two pointers together 
	while (node.next != null) {
		head = head.next;
		node = node.next;
	}
	return head;
}
http://blog.csdn.net/beiyetengqing


你可能感兴趣的:(Algorithm,list,null,less,distance,Pointers)