• 剑指offer 链表的第k大元素 双指针


     

     

     

     

     

    #include <bits/stdc++.h>

    using namespace std;

    //定义一个结点模板
    template<typename T>
    struct Node {
    T data;
    Node *next;
    Node() : next(nullptr) {}
    Node(const T &d) : data(d), next(nullptr) {}
    };

    //删除 p 结点后面的元素
    template<typename T>
    void Remove(Node<T> *p) {
    if (p == nullptr || p->next == nullptr) {
    return;
    }
    auto tmp = p->next->next;
    delete p->next;
    p->next = tmp;
    }

    //在 p 结点后面插入元素
    template<typename T>
    void Insert(Node<T> *p, const T &data) {
    auto tmp = new Node<T>(data);
    tmp->next = p->next;
    p->next = tmp;
    }

    //遍历链表
    template<typename T, typename V>
    void Walk(Node<T> *p, const V &vistor) {
    while(p != nullptr) {
    vistor(p);
    p = p->next;
    }
    }

    int main() {
    auto p = new Node<int>(1);
    Insert(p, 2);
    int sum = 0;
    Walk(p, [&sum](const Node<int> *p) -> void { sum += p->data; });
    cout << sum << endl;
    Remove(p);
    sum = 0;
    Walk(p, [&sum](const Node<int> *p) -> void { sum += p->data; });
    cout << sum << endl;
    return 0;
    }

    作者:Time-Limit
    链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/solution/yi-wen-gao-ding-chang-jian-de-lian-biao-wen-ti-h-3/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

     

     

     

     

     

  • 相关阅读:
    Linux:备份
    在 Cordova/Phonegap for Android 中包含中文文件名的页面
    jQuery插件开发
    为Google Reader守夜。。。
    冒泡排序
    无题六月
    XXX读后感
    KL25的AD采集操作
    工作流--JBPM简介及开发环境搭建
    内存错误:CRT detected that the application wrote to memory after end of heap buffer
  • 原文地址:https://www.cnblogs.com/sweet-li/p/13227435.html
Copyright © 2020-2023  润新知