#include<stdio.h>
#include<stdlib.h>
#define MAXN 100010
typedef struct List Node; //*Node 发生段错误 ?
struct List
{
int Data;
int Next;
};
Node A[MAXN];
int list[MAXN];
void Swap(int *a,int *b);
void Reverse(int *list,int a,int b);
int main()
{
int N,K,j,i,FirstAddress,Address,Data;
scanf("%d",&FirstAddress);
scanf("%d %d",&N,&K);
for(i=0;i<N;i++)
{
scanf("%d",&Address);
scanf("%d %d",&A[Address].Data,&A[Address].Next);
}
j=1;
int p=FirstAddress;
while(p!=-1)
{
list[j++]=p;
p=A[p].Next;
}
i=0;
j--;
while(i+K<=j)//缺少了等于,此处while?
{
Reverse(list,i+1,i+K);
i+=K;
}
for(i=1;i<j;i++)
{
printf("%05d %d %05d\n",list[i],A[list[i]].Data,list[i+1]);
}
printf("%05d %d -1",list[i],A[list[i]].Data);
return 0;//忘记return 0
}
void Swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void Reverse(int *list,int a,int b)
{
while(a<b)Swap(&list[a++],&list[b--]);
}
(浙江大学数据结构C语言实现)7-2 Reversing Linked List (25 分)
最新推荐文章于 2023-08-05 16:50:35 发布