删除重复元素-链表

题目

https://kamacoder.com/problem.php?id=1019

题解

#include<iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct LinkNode {
    int data;
    LinkNode *next;
    LinkNode(int data) : data(data), next(nullptr) {}
};

LinkNode* deleteDuplicateList(LinkNode *cur)
{
    LinkNode *curNext = cur->next;
    while (cur && curNext)
    {
        if (cur->data == curNext->data) // 相等就不需要移动cur,下次循环判断
        {
            LinkNode *tmp = curNext->next;
            delete curNext;
            curNext = nullptr;
            cur->next = tmp;
            curNext = cur->next;
        }
        else
        {
            cur = cur->next;
            curNext = curNext->next;
        }
    }
    return cur;
}

void printList(LinkNode *cur)
{
    while (cur)
    {
        cout << cur->data << ' ';
        cur = cur->next;
    }
    cout << endl;
}

int main()
{
    int n, tmp;
    LinkNode *dummyNode = new LinkNode(0);
    while (cin >> n)
    {
        vector<int> vec;
        if (n == 0)
        {
            cout << "list is empty" << endl;
            continue;
        }
        LinkNode *cur = dummyNode;
        for (int i = 0; i < n; ++i)
        {
            cin >> tmp;
            vec.push_back(tmp);
        }
        sort(vec.begin(), vec.end());
        for (auto v : vec)
        {
            LinkNode *node = new LinkNode(v);
            cur->next = node;
            cur = node;
        }
        printList(dummyNode->next);
        deleteDuplicateList(dummyNode->next);
        printList(dummyNode->next);
    }
    
    return 0;
}
posted @   COMEIN  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示