uva 10152 - ShellSort
时间:2011-06-01
来源:加速!!!!!!!!!!
在手机上看
手机扫描阅读
/*
从大到小寻找下标,若该下表的乌龟上方有任意一个乌龟比它的下标大,就移动该乌龟。
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct _turtle
{
char s[100];
int order;
struct _turtle *last;
struct _turtle *next;
}turtle;
char requirted[100];
int main()
{
int i,K,n,local;
turtle *p,*pp,*_pp,*head,*now,*end;
scanf("%d",&K);
while(K-->0)
{
scanf("%d",&n);
getchar();
head=NULL;
p=head;
for(i=0;i<n;i++)
{
now=(turtle *)malloc(sizeof(turtle));
gets(now->s);
if(i==0)
{
head=now;
p=now;
p->last=NULL;
}
else
{
now->last=p;
p->next=now;
p=p->next;
}
}
p->next=NULL;
end=p;
for(i=0;i<n;i++)
{
gets(requirted);
p=head;
while(strcmp(p->s,requirted)!=0)
p=p->next;
p->order=i;
}
for(i=n-1;i>=0;i--)
{
p=end;
local=n-1;
while(p->order!=i)
{
p=p->last;
local--;
}
pp=p->last;
while(pp!=NULL)
if(pp->order>i)
break;
else
pp=pp->last;
if(pp!=NULL)
{
printf("%s\n",p->s);
if(local==n-1)
{
end=end->last;
end->next=NULL;
head->last=p;
p->next=head;
head=p;
head->last=NULL;
}
else
{
pp=p->last;
_pp=p->next;
pp->next=_pp;
_pp->last=pp;
p->next=head;
head->last=p;
head=p;
head->last=NULL;
}
}
}
printf("\n");
}
return 0;
}
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28















