算法与数据结构面试题(13)-求链表倒数第K个节点

题目


题目:输入一个单向链表,输出该链表中倒数第k 个结点。
链表的倒数第0 个结点为链表的尾指针。


解题思路


需要2个指针,一个是遍历指针,一个是跟随指针。当遍历指针遍历到第K个元素的时候,跟随指针也要每次移动一步,保持和遍历指针的距离始终为K,当遍历结束的时候,跟随指针所指向的节点即为所求节点。


代码


public class Problem13 {
	private LinkedListNode node;
	// 当遍历的个数大于k时要,该指针要每次要移动K次,目的是保持和遍历指针的距离为K,
	//这样当遍历结束的时候,该指针就指向倒数第K个指针

	public void getLastKNode(LinkedListNode root, int k) {
		int index = 1;
		LinkedListNode runNode;
		runNode = root;
		while (runNode != null) {
			runNode = runNode.getNextNode();
			index++;
			if (index == k) {
				node = root;
			} else if (index > k) {
				node = node.getNextNode();
			}
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}


你可能感兴趣的:(数据结构,算法)