1074. Reversing Linked List (25)

来源:互联网 发布:数据倒卖 编辑:程序博客网 时间:2024/06/05 03:32

1074. Reversing Linked List (25)

#include <stdio.h>struct node{    int address;    int data;    int next;}node[100001];struct node *stack[100001];struct node *queue[100001];int top,front,rear;int main(){    int head,n,k;    scanf("%d %d %d",&head,&n,&k);    while(n--){        int add,d,nextadd;        scanf("%d %d %d",&add,&d,&nextadd);        node[add].address=add;        node[add].data=d;        node[add].next=nextadd;    }    int x=head,cur=head,tag=0;    while(x!=-1){        cur=x;        for(int i=0;i<k;i++){            if(x==-1){                tag=1;break;            }            stack[top++]=&node[x];            x=node[x].next;        }        if(tag)break;        for(int i=0;i<k;i++)            queue[rear++]=stack[--top];    }    while(tag&&cur!=-1){        queue[rear++]=&node[cur];        cur=node[cur].next;    }    while(front<rear-1){        printf("%05d %d %05d\n",queue[front]->address,queue[front]->data,queue[front+1]->address);        ++front;    }    printf("%05d %d -1\n",queue[rear-1]->address,queue[rear-1]->data);    return 0;}

这里写图片描述

0 0