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

  • 相关阅读:
    DXF文件格式理解
    Qt Creator调试命令行参数
    qt编译错误:invalid new-expression of abstract class type "*"
    dxf文件解析库libdxf初探
    ubuntu linux编译libdxfrw
    CAD DWG/DXF文件C++解析库libdxfrw
    AutoCAD版本dxf文件与dxflib解析库支持探索
    Linux 6种日志查看方法(转)
    码率、分辨率、帧率和画质计算单位时间码流大小(转)
    纯手工打造车载车牌识别检测系统(转)
  • 原文地址:https://www.cnblogs.com/itdef/p/6107395.html
Copyright © 2011-2022 走看看