[CCCC]L2-022 重排链表 (25 分)-模拟链表

L2-022.png

分析

做法:先遍历一遍链表,将链表转换成数组,然后设置两个下标遍历数组,注意奇数个情况下的越界问题~!!!这里是一个坑点!

ac代码

#include<bits/stdc++.h>
using namespace std;

struct node{
    int id;
    int next;
}node[100000];

int main(){
    int begin,n;
    cin>>begin>>n;
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
        cin>>node[x].id>>node[x].next;
    }
    vector<int> v;
    for(;node[begin].next!=-1;begin=node[begin].next){
        v.push_back(begin);
    }
    v.push_back(begin);

    int i=0;int j=v.size()-1;
    while(i<=j){
        if(j==v.size()-1){
            printf("%05d %d ",v[j],node[v[j]].id);j--;
        }else{
            printf("%05d\n",v[j]);
            printf("%05d %d ",v[j],node[v[j]].id);j--;  
        }
        if(i<=j){
            printf("%05d\n",v[i]);
            printf("%05d %d ",v[i],node[v[i]].id);i++;
        }
        if(i>j){
            cout<<-1<<endl;
        }
    }
    return 0;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容