PAT 1133 Splitting A Linked List

博客提到在操作时需注意输出不能越界,同时说明了使用向量来保存满足条件的地址,涉及信息技术中数据存储与操作相关内容。

注意输出时不能越界

用向量来保存满足条件的地址

#include <iostream>
#include <vector>
using namespace std;
struct Node{
    int val,next;
};
Node map1[100000];

vector<int> vectors[3];
/**
 * 尚未完成
 */
int main() {
    int address,N,K;
//    vector<int> vectors[3];//保存地址
            //    map<int,Node*> map1;
    scanf("%d%d%d",&address,&N,&K);
    for (int i = 0; i < N; ++i) {
        int addr,data,next;
        scanf("%d",&addr);
//        scanf("%d%d%d",&addr,&data,&next);
        scanf("%d%d",&map1[addr].val,&map1[addr].next);
//        Node* node=new Node();
//        Node node;
//        node.val=data;
//        node.next=next;
//        map1[addr]=node;
    }
    int addr=address;
    while (addr!=-1){
        int val=map1[addr].val;
        if(val<0){
            vectors[0].push_back(addr);
        }else if(val>=0&&val<=K){
            vectors[1].push_back(addr);
        } else{
            vectors[2].push_back(addr);
        }
        addr=map1[addr].next;
    }
    bool flag = false;
    for (auto & i : vectors) {
        for (int j : i) {
            if (!flag) {
                printf("%05d %d ", j, map1[j].val);
                flag = true;
            } else {
                printf("%05d\n%05d %d ", j, j, map1[j].val);
            }
        }
    }
    printf("-1\n");
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值