题目描述

对于一个链表 L: L0→L1→…→Ln-1→Ln,
将其翻转成 L0→Ln→L1→Ln-1→L2→Ln-2→…

输入是一串数字,请将其转换成单链表格式之后,再进行操作

输入描述:

一串数字,用逗号分隔

输出描述:

一串数字,用逗号分隔
示例1

输入

1,2,3,4,5

输出

1,5,2,4,3

备注:

数组长度不超过100000

处理逗号的位置上,运用vector储存,同样用getchar来判断界限。

#include<iostream>
#include<vector>
using namespace std;
int main(){
    int flag = 1;
    char ch;
    int num;
    vector<int> ans;
    while (flag){
        scanf("%d",&num);
        ch = getchar();
        if( ch != ',' ) flag = 0;
        ans.push_back(num);
    }
    int count = 0;
    for( int i = 0 ; i < ans.size()/2 + 1 ; i ++ ){
        if( ans.size() == 1) printf( "%d",ans[0]);
        else if( ans.size() - count == 1 ) printf(",%d",ans[i]),count++;//只剩中间一个
        else if( ans.size() - count == 0 ) break;
        else{
            if( i == 0 ) printf("%d,%d",ans[0],ans[ans.size()-1]);
            else printf(",%d,%d",ans[i],ans[ans.size()-i-1]);
            count +=2;
        }

    }
}

0 条评论

发表评论

Avatar placeholder