02-1

/*
  title:
  问题分类:
  1.有多个-1
  2.只有一个节点
  3.翻转全部节点,最后改-1
  对于1始终不过,5ab10010是段错误

*/

http://www.patest.cn/contests/mooc-ds/02-1

#include<stdio.h>
struct t{
    int add;
    int data;
    int next;
}a[100010],b[100010];
int find(int add,t a[],int len){
    for(int i=0;i<len;i++){
        if(add==a[i].add){
            return i;
        }
    }
}
int main(){
    //freopen("in.txt","r",stdin);
    int fir,len,res;
    while(scanf("%d %d %d",&fir,&len,&res)!=EOF){
        for(int i=0;i<len;i++){
            scanf("%d %d %d",&a[i].add,&a[i].data,&a[i].next);
        }
        //2.只有一个节点
        if(len==1){
            printf("%05d %d %d\n",a[0].add,a[0].data,-1);
            continue;
        }
          //struct t b[len];
          int k=find(fir,a,len);
          b[0].add=a[k].add;
          b[0].data=a[k].data;
          b[0].next=a[k].next;
          for(int i=1;;i++){
              k=find(b[i-1].next,a,len);
              b[i].add=a[k].add;
              b[i].data=a[k].data;
              b[i].next=a[k].next;
              //1.有多个-1
              if(b[i].next==-1){
                  len=i;
                  break;
              }
          
          }
          
          for(int i=res-1;i>=0;i--){
              if(i!=0){
                  b[i].next=b[i-1].add;
              }else{
                  b[i].next=b[res].add;
              }
              
              
          }
          
          for(int i=res-1;i>=0;i--){
              //3.翻转全部节点,最后改-1
              if(i==0&&res==(len+1)){
                  printf("%05d %d %d\n",b[i].add,b[i].data,-1);
              }else{
                  printf("%05d %d %05d\n",b[i].add,b[i].data,b[i].next);
              }
          }
          for(int i=res;i<=len;i++){
              if(b[i].next!=-1){
                  printf("%05d %d %05d\n",b[i].add,b[i].data,b[i].next);
              }else{
                  printf("%05d %d %d\n",b[i].add,b[i].data,-1);
              }
              
          }
          
          
        
    
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,你可以使用DateTimeFormatter和LocalDateTime来将字符串类型的日期时间转换为Date格式。但需要注意的是,日期时间字符串必须是合法的日期时间,否则会抛出DateTimeParseException异常。 下面是一个示例代码,将字符串类型的 "2021-02-1 9:25:32" 转换为Date格式: ```java import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.util.Date; public class Main { public static void main(String[] args) { String dateTimeString = "2021-02-1 9:25:32"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-d H:mm:ss"); try { LocalDateTime localDateTime = LocalDateTime.parse(dateTimeString, formatter); Date date = Date.from(localDateTime.atZone(java.time.ZoneId.systemDefault()).toInstant()); System.out.println(date); } catch (DateTimeParseException e) { System.out.println("无法解析日期时间字符串"); } } } ``` 运行这段代码,输出结果将会是: ``` Wed Feb 01 09:25:32 CST 2021 ``` 这个例子中,我们使用了 "yyyy-MM-d H:mm:ss" 的格式来匹配日期时间字符串。其中,"yyyy" 表示四位数的年份,"MM" 表示两位数的月份,"d" 表示一位或两位数的日期,"H" 表示一位或两位数的小时(24小时制),"mm" 表示两位数的分钟,"ss" 表示两位数的秒。 通过使用正确的DateTimeFormatter格式,你可以成功地将 "2021-02-1 9:25:32" 转换为Date格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值