堆积木
问题描述如下:
代码:
#include <stdio.h>
#include <stdlib.h>
#define maxsize 10000
typedef struct node
{
int num;
struct node *next;
}lsnode, *lslink;
void CreateSqlink(lslink data[maxsize], int n)
{
int i;
lslink p;
for(i=0;i<n;i++)
{
p=(lslink)malloc(sizeof(lsnode));
p->num=i+1;
p->next=NULL;
data[i]->next=p;
}
free(p);
}
void move(lslink data[maxsize], int a, int b)
{
lslink p, q;
p=data[b]->next;
data[b]->next=NULL;
q=data[a]->next;
while(q->next!=NULL)
{
q->next=q->next->next;
}
q->next=p;
}
void main()
{
int n, m;
scanf("%d%d", &n, &m);
lslink data[maxsize];
CreateSqlink(data,n);
int i,a,b;
for(i=0;i<n;i++)
{
scanf("%d%d", &a,&b);
if(a!=b)
move(data,a-1,b-1);
}
lslink p;
for(i=0;i<n;i++)
{
p=data[i]->next;
while(p!=NULL)
{
printf("%d",p->num);
p=p->next;
if(p!=NULL)
printf(" ");
else
printf("\n");
}
}
}