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

  • 相关阅读:
    MyEclipse快捷键大全
    mac下配置android环境变量
    JAVA NIO 简单介绍
    android读取大图片并缓存
    Android  <meta-data>
    iPhone 6/6 Plus国行版开卖当日抢购攻略
    A380上11万一张的机票什么享受?来看看
    连载15年!《火影忍者》终于迎来大结局
    Windows 技术预览版
    纪录片《天安门》
  • 原文地址:https://www.cnblogs.com/itdef/p/6107395.html
Copyright © 2011-2022 走看看