博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
移动小球链表实现
阅读量:6787 次
发布时间:2019-06-26

本文共 1526 字,大约阅读时间需要 5 分钟。

有一些小球,从左至右编号为1 2 3 ...... n

执行A 1 4后,小球1被移到4的左边

执行B 3 5后,小球3被移到5的右边

样例输入:

6 2

A 1 4
B 3 5

样例输出:

 214536

1 #include
2 const int N=50000; 3 struct Node 4 { 5 int order; 6 Node *left,*right; 7 }node[N]; 8 9 void CreateNode(int n)10 {11 int i;12 for(i = 1;i <= n;i++)13 {14 node[i].order = i;15 node[i].right = &node[i+1];16 node[i+1].left= &node[i]; 17 }18 node[0].left = NULL;19 node[0].right = &node[1];20 node[1].left = &node[0];21 node[i].right = NULL;22 }23 void A(int x,int y)24 {25 Node *p = &node[x],*q = &node[y]; 26 p->right->left=p->left; 27 p->left->right=p->right; 28 p->right=q; 29 p->left=q->left; 30 q->left->right=p; 31 q->left=p; 32 }33 34 void B(int x,int y)35 {36 Node *p = &node[x],*q = &node[y]; 37 p->right->left = p->left; 38 p->left->right = p->right; 39 p->left = q; 40 p->right = q->right; 41 q->right->left = p; 42 q->right = p; 43 }44 int main()45 {46 int n,m;47 char cmd;48 int x,y;49 scanf("%d%d",&n,&m);50 CreateNode(n);51 while(m--)52 {53 scanf("%*c%c%d%d",&cmd,&x,&y);54 if(cmd == 'A')55 A(x,y);56 if(cmd == 'B')57 B(x,y);58 }59 Node *l = &node[0];60 l = l->right;61 while(l->right)62 {63 printf("%d",l->order);64 l = l->right;65 }66 return 0;67 }

在此感谢这篇博客给我的帮助

转载于:https://www.cnblogs.com/boyiliushui/p/5026604.html

你可能感兴趣的文章
centos 搭建 nagios 监控系统.
查看>>
管理禁忌小记录(一)
查看>>
遍历接口信息
查看>>
Dell R710 服务器更新windows server 2012的相关问题
查看>>
编程中最神奇的数字,你知道吗?
查看>>
数据可视化:柱状图、雷达图等六种基本图表的特点和适用场合
查看>>
选择器 :gt(index)
查看>>
notes on python
查看>>
kafa
查看>>
资源 | Feature Tools:可自动构造机器学习特征的Python库
查看>>
linux Shell 中常用的条件判断
查看>>
angular 动态设置blob链接给 ng-href时遇到unsafe 解决方案
查看>>
Java与Highcharts实例(四) - Hello Highcharts (后台Java传递数
查看>>
连接数据库的操作 总结
查看>>
Android 小米手机开发APP图标更换后还显示原来的图标
查看>>
在代码中修改Shape的solid属性的color值
查看>>
MySQL字符集问题
查看>>
Java多线程总结
查看>>
iPad Mini外屏碎了 换屏幕教程
查看>>
LinkedBlockingQueue操作,线程安全问题,ConcurrentModificationException 异常分析与解决方案...
查看>>