pat 甲级 1052 Linked List Sorting

本文记录了一次链表排序算法实现的经历,初次尝试因忽略非链表节点导致失败,通过增加判断条件最终解决问题。文章详细展示了从理解题目、编写代码到调试通过的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一次写了差一个点没过
没考虑有节点不在链表上不应该加入排序

最开始读题一脸迷茫,,这根本用不到 下一个指向谁啊
然后就没写(根本没用到这个数据)
然后就有一个点没过了,,

加入判断,通过

#include <cstdio>
#include <iostream>
#include <algorithm>

using namespace std;

int n, start;
struct stu{
    int kai;
    int key;
    int end;
};

stu number[1000000], all[1000000];

bool cmp(stu a , stu b){
    return a.key < b.key;
}

int main(){

    scanf("%d%d",&n, &start);
    for(int i=0; i<n; i++){
        int a, b, c;
        scanf("%d%d%d",&a,&b,&c);
        all[a].kai = a;
        all[a].key = b;
        all[a].end = c;
    }
    int num = 0;
    if(start == -1) {
        printf("0 -1\n");
        return 0;
    }
    while(start != -1){
        number[num].kai = all[start].kai;
        number[num].key = all[start].key;
        number[num].end = all[start].end;
        start = all[start].end;
        num++;
    }

    sort(number,number+num,cmp);

    printf("%d %05d\n",num,number[0].kai);
    for(int j=0; j<num; j++){
        if(j+1 != num)
        printf("%05d %d %05d\n",number[j].kai,number[j].key,number[j+1].kai);
        else printf("%05d %d -1\n",number[j].kai,number[j].key);
    }


    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值