码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-08-19 01:00:33      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:c++   算法   

我们维护两个指针, 它们之间的距离为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;
}


实现一个算法从一个单链表中返回倒数第n个元素(keep it up),布布扣,bubuko.com

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

标签:c++   算法   

原文地址:http://blog.csdn.net/xiaoliangsky/article/details/38671377

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!