zoukankan      html  css  js  c++  java
  • 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
    ",a[i].curadd,a[i].data,a[i+1].curadd);
    			printf("%05d %d -1
    ",a[i].curadd,a[i].data);
    		}
    		else if(k==num)
    		{
    			for(i=num-1;i>0;i--)
    				printf("%05d %d %05d
    ",a[i].curadd,a[i].data,a[i-1].curadd);
    			printf("%05d %d -1
    ",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
    ",a[i].curadd,a[i].data,a[i+1].curadd);
    			printf("%05d %d -1
    ",a[i].curadd,a[i].data);
    		}
    	}
    	return 0;
    }

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


  • 相关阅读:
    CodeForces
    POJ
    POJ 2260 Error Correction 模拟 贪心 简单题
    POJ
    HDU
    UVA
    CodeForces
    CodeForces
    常见的医学图像成像(总)
    ADNI数据集相关概念整理
  • 原文地址:https://www.cnblogs.com/abc-24990/p/4257475.html
Copyright © 2011-2022 走看看