zoukankan      html  css  js  c++  java
  • 链表练习

    #include <memory>

    #include <iostream>
    #include <chrono>
    #include <thread>
    using namespace std;

    struct ListNode {
    int val;
    shared_ptr<ListNode> next;
    };

    bool InsertNode(shared_ptr<ListNode>& insertPos, int val)
    {
    shared_ptr<ListNode> node(new ListNode);
    if (!node)
    return false;
    node->val = val;
    node->next = NULL;
    insertPos->next = node;
    insertPos = node;

    return true;
    }

    shared_ptr<ListNode> InitLinkList()
    {
    shared_ptr<ListNode> head(new ListNode());
    head->val = 1;
    shared_ptr<ListNode> tail = head;

    InsertNode(tail, 2);
    InsertNode(tail, 2);
    InsertNode(tail, 2);
    InsertNode(tail, 3);
    InsertNode(tail, 4);
    InsertNode(tail, 4);
    InsertNode(tail, 5);

    return head;
    }

    void CoutLinkList(const shared_ptr<ListNode>& head)
    {
    for (shared_ptr<ListNode> node = head;
    node; node = node->next)
    {
    cout << node->val << " ";
    }
    cout << endl;
    }


    shared_ptr<ListNode> deleteDuplicates(shared_ptr<ListNode>& head)
    {
    if (!head)
    return NULL;
    shared_ptr<ListNode> dummy(new ListNode());
    dummy->val = 0;
    dummy->next = head;

    shared_ptr<ListNode> node = dummy;
    while(node->next != NULL && node->next->next!= NULL){
    if(node->next->val == node->next->next->val)
    {
    int val_prev = node->next->next->val;
    while (node->next != NULL && val_prev == node->next->val)
    {
    node->next = node->next->next;
    }
    }else{
    node = node->next;
    }

    }
    return dummy->next;
    }


    int main()
    {
    shared_ptr<ListNode> h = deleteDuplicates(InitLinkList());

    CoutLinkList(h);

    return 0;
    }

    #include <memory>
    #include <iostream>
    #include <chrono>
    #include <thread>
    using namespace std;

    struct ListNode {
    int val;
    shared_ptr<ListNode> next;
    };

    bool InsertNode(shared_ptr<ListNode>& insertPos, int val)
    {
    shared_ptr<ListNode> node(new ListNode);
    if (!node)
    return false;
    node->val = val;
    node->next = NULL;
    insertPos->next = node;
    insertPos = node;

    return true;
    }

    shared_ptr<ListNode> InitLinkList()
    {
    shared_ptr<ListNode> head(new ListNode());
    head->val = 1;
    shared_ptr<ListNode> tail = head;

    InsertNode(tail, 2);
    InsertNode(tail, 3);
    InsertNode(tail, 4);
    InsertNode(tail, 5);

    return head;
    }

    void CoutLinkList(const shared_ptr<ListNode>& head)
    {
    for (shared_ptr<ListNode> node = head;
    node; node = node->next)
    {
    cout << node->val << " ";
    }
    cout << endl;
    }

    shared_ptr<ListNode> ReverLinkList(shared_ptr<ListNode>& head)
    {
    shared_ptr<ListNode> prev = NULL;
    while(head != NULL)
    {
    shared_ptr<ListNode> curr = head;
    head = head->next;
    curr->next = prev;
    prev = curr;
    }

    return prev;
    }

    int main()
    {
    CoutLinkList(ReverLinkList(InitLinkList()));

    return 0;
    }

  • 相关阅读:
    kettle 连接 SQL Server 异常
    Quartz.NET
    过滤器和拦截器
    Spring Web MVC(一)
    Spring(三)之自动装配、表达式
    spring(四)之基于注解(Annotation-based)的配置.md
    Spring(一)之IOC、bean、注入
    Spring(二)之配置.md
    cookie和session详解
    jsp基础与提高(EL、JSTL)
  • 原文地址:https://www.cnblogs.com/itdef/p/6107395.html
Copyright © 2011-2022 走看看