zoukankan      html  css  js  c++  java
  • 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;
    }


  • 相关阅读:
    预分频之三
    MySQL超时配置
    随机森林深入理解
    决策树算法——ID3
    指数平滑法
    最小二乘法的Java实现
    JS实战
    CSS布局实战
    Win7 Python开发环境搭建
    神经网络正向传播与反向传播公式
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5169317.html
Copyright © 2011-2022 走看看