zoukankan      html  css  js  c++  java
  • 【链表】一个单向链表,给出头结点,找出倒数第N个结点(要求O(N)的时间复杂度)

     分析:

    其实就是p先跑然后标示出p和pre的恒定差,此后一直维持这种恒定差就能在p到最后的时候,pre能指向倒数第N个结点。

    思路:

    • 定义两个指针p、pre都指向头结点;
    • p指针先跑,当p指针跑了N-1个节点后,pre指针再开始跑;
    • 当p指针跑到最后时,pre所指指针就是倒数第N个节点。
     1 #include <iostream>
     2 using namespace std;
     3 typedef struct ListNode* List;
     4 struct ListNode {
     5     int data;
     6     List next;
     7 };
     8 
     9 List FindNth(List L,int n) {
    10     List p = L, pre = L;
    11     //判断n是否合理
    12     for (int i = 0; i < n - 1; i++) {
    13         if (p->next != NULL) {
    14             p = p->next;
    15         }
    16         else
    17             return NULL;
    18     }
    19     while (p->next != NULL) {
    20         pre = pre->next;
    21         p = p->next;
    22     }
    23     return pre;
    24 }
  • 相关阅读:
    QPS的优化
    面试题
    py-redis
    集群化的部署
    RESTful设计
    python第三方库------jieba库(中文分词)
    csv文件读写处理
    python中的turtle库(图形绘画库)
    html中form表单的使用方法和介绍
    WC2019
  • 原文地址:https://www.cnblogs.com/PennyXia/p/12652911.html
Copyright © 2011-2022 走看看