Reversing Linked List (25)

来源:互联网 发布:北风网大数据全套视频 编辑:程序博客网 时间:2024/06/03 19:52
#include<stdio.h>#include<stdlib.h>typedef struct Node{int curadd;int data;int nextadd;}Node;int main(){int n,k,firstadd,i,num,j;Node *a,temp;int c;while(scanf("%d%d%d",&firstadd,&n,&k)!=EOF){a=(Node *)malloc(n*sizeof(Node));for(i=0;i<n;i++)scanf("%d%d%d",&a[i].curadd,&a[i].data,&a[i].nextadd);num=0;while(firstadd!=-1){j=num;while(a[j].curadd!=firstadd)j++;firstadd=a[j].nextadd;temp=a[num];a[num]=a[j];a[j]=temp;num++;}if(k>num){for(i=0;i<num-1;i++)printf("%05d %d %05d\n",a[i].curadd,a[i].data,a[i+1].curadd);printf("%05d %d -1\n",a[i].curadd,a[i].data);}else if(k==num){for(i=num-1;i>0;i--)printf("%05d %d %05d\n",a[i].curadd,a[i].data,a[i-1].curadd);printf("%05d %d -1\n",a[0].curadd,a[0].data);}else{c=num/k;for(i=0;i<c;i++){for(j=0;j<k/2;j++){temp=a[k*i+j];a[k*i+j]=a[k*i+k-j-1];a[k*i+k-j-1]=temp;}}for(i=0;i<num-1;i++)printf("%05d %d %05d\n",a[i].curadd,a[i].data,a[i+1].curadd);printf("%05d %d -1\n",a[i].curadd,a[i].data);}}return 0;}

这道题目让我再一次鄙视自己,首先是对题目的意思不能完全理解!想了好多弯路。看了网上的解题报告理解了题目的意思再动手写代码。结果测试还是有一个测试点不能通过。由于害怕对题目没有完全理解,怕自己找不出错误,结果把问题摆在群里,浙大考研群的同学通过测试帮我把问题找出来了。还有个浙大高手直接把我代码的小问题找出来了。再一次鄙视自己!自己写的代码本来就乱糟糟,自己能理解清楚都费力。真心感谢帮助我的人!!!


0 0
原创粉丝点击