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