1097 Deduplication on a Linked List

cpp 复制代码
#include <cstdio>
#include <cmath>
#include <vector>
using namespace std;
const int maxn = 100010;
struct Node{
    int address, data, next, flag;
    Node(){
        flag = 0;
    }
}nodes[maxn];
int ma[10001];
int del(int pre, int cur){
    int next = nodes[cur].next;
    nodes[pre].next = next;
    return next;
}
int main() {
    int head,n;
    scanf("%d%d", &head, &n);
    int add;
    for(int i = 0; i < n; i++){
        scanf("%d", &add);
        scanf("%d%d", &nodes[add].data, &nodes[add].next);
        nodes[add].address = add;
    }
    ma[abs(nodes[head].data)] = 1;
    int pre=head,cur=nodes[head].next,d;
    vector<int> delNodes;
    while(cur != -1){
        int d = abs(nodes[cur].data);
        if(ma[d] == 1){
            delNodes.push_back(cur);
            cur = del(pre,cur);
        }else{
            ma[abs(nodes[cur].data)] = 1;
            pre = cur;
            cur = nodes[cur].next;
        }
    }
    int p;
    for(p = head; p != -1; p = nodes[p].next){
        if(nodes[p].next != -1){
            printf("%05d %d %05d\n", nodes[p].address, nodes[p].data, nodes[p].next);
        }else{
            printf("%05d %d -1\n", nodes[p].address, nodes[p].data);
        }
    }
    for(int i = 0; i < delNodes.size(); i++){
        if(i < delNodes.size()-1){
            printf("%05d %d %05d\n", nodes[delNodes[i]].address, nodes[delNodes[i]].data, nodes[delNodes[i+1]].address);
        }else{
            printf("%05d %d -1\n", nodes[delNodes[i]].address, nodes[delNodes[i]].data);
        }
    }
    return 0;
}
相关推荐
孞㐑¥33 分钟前
算法——BFS
开发语言·c++·经验分享·笔记·算法
月挽清风38 分钟前
代码随想录第十五天
数据结构·算法·leetcode
XX風1 小时前
8.1 PFH&&FPFH
图像处理·算法
NEXT061 小时前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
代码游侠2 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
想进个大厂2 小时前
代码随想录day37动态规划part05
算法
sali-tec2 小时前
C# 基于OpenCv的视觉工作流-章22-Harris角点
图像处理·人工智能·opencv·算法·计算机视觉
子春一2 小时前
Flutter for OpenHarmony:构建一个 Flutter 四色猜谜游戏,深入解析密码逻辑、反馈算法与经典益智游戏重构
算法·flutter·游戏
人道领域2 小时前
AI抢人大战:谁在收割你的红包
大数据·人工智能·算法
TracyCoder1233 小时前
LeetCode Hot100(34/100)——98. 验证二叉搜索树
算法·leetcode