008实现一个算法从一个单链表中返回倒数第n个元素(keep it up)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了008实现一个算法从一个单链表中返回倒数第n个元素(keep it up)相关的知识,希望对你有一定的参考价值。

我们维护两个指针, 它们之间的距离为n。

然后。我将这两个指针同步地在这个单链表上移动,保持它们的距离 为n不变。

那么,

当第二个指针指到空时。第一个指针即为所求。

#include <iostream>

struct Node
{
	int   data;
	Node* next;
};


void initList(Node* vNode)
{
	for (int i=0; i < 20; ++i)
	{
		Node* TempNode = new Node;
		TempNode->data = i;
		TempNode->next = vNode->next;
		vNode->next    = TempNode;
	}
}



Node* getNthBackWards(const Node* vNode, int vN)
{
	if (vN < 1 || vNode == NULL) return NULL;
	Node* p = vNode;
	Node* q = vNode;

	while (vN>0)
	{
		++q;
		if (q == NULL) return NULL;
		--vN;
	}

	while (q != NULL)
	{
		++q;
		++p;
	}

	return p;
}

int main()
{
	Node* Root = new Node;
	Root->next = NULL;

	initList(Root);
	
	Node* Result = getNthBackWards(Root, 7);
	std::cout << Result->data << std::end;

	return 0;
}


以上是关于008实现一个算法从一个单链表中返回倒数第n个元素(keep it up)的主要内容,如果未能解决你的问题,请参考以下文章

一个单链表中返回倒数第n个元素

一个单链表中返回倒数第n个元素

如何找出单链表中的倒数第k个元素

算法总结之 在单链表和双链表中删除倒数第k个节点

2.2 在单链表和双链表中删除倒数第K个节点

链表中倒数第k个结点