zoukankan      html  css  js  c++  java
  • 剑指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)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

     

     

     

     

     

  • 相关阅读:
    vue安装过程
    es6 Array数组方法
    初始化 CSS 样式
    css新增伪类
    常浏览器兼容性问题与解决方案
    CSS3高级
    php总结
    php环境和使用方法
    [书籍介绍] Python网络数据采集_PDF电子书下载 高清 带索引书签目录_(美)Ryan Mitchell著_北京
    深度学习与计算机视觉应用实战课程
  • 原文地址:https://www.cnblogs.com/sweet-li/p/13227435.html
Copyright © 2011-2022 走看看