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;
    }


  • 相关阅读:
    HTTP协议简介
    HTTP缓存带来的“bug”--HTTP 协议 Cache-Control
    PHP7变量的内部实现(一)
    PHP 简单的加密解密方法
    php 制作圆形图片
    python解决图的最短路径问题
    PHP中文关键词匹配
    D25
    D24
    D23
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5169317.html
Copyright © 2011-2022 走看看