nyoj 551 移动小球
2012-03-29 20:11
204 查看
第一次尝试用链表,以前从来不知道链表是什么玩意。。。
通过一点点研究老秃驴的代码,才弄懂的,原来这就是传说中的链表。。
我发现基础真的很重要,我真的有点好高骛远了,当我想学字典树的时候,我发现自己还不会链表
,没办法只有好好去看看数据结构了,没看还好,一看我发现自己竟然不清楚什么是指针。。
,于是狠下心来,终于把指针看了一遍。你说我容易吗???队友们几星期前已经把字典树搞定了,现在都在弄最短路,我真是远远落后了,看来不努力是不行了呀。。
通过一点点研究老秃驴的代码,才弄懂的,原来这就是传说中的链表。。
我发现基础真的很重要,我真的有点好高骛远了,当我想学字典树的时候,我发现自己还不会链表
,没办法只有好好去看看数据结构了,没看还好,一看我发现自己竟然不清楚什么是指针。。
,于是狠下心来,终于把指针看了一遍。你说我容易吗???队友们几星期前已经把字典树搞定了,现在都在弄最短路,我真是远远落后了,看来不努力是不行了呀。。
#include<stdio.h> #define m 10005 struct Node//建立链表 { int a; Node *l,*r;//左右指针 }node[m]; void build(int n)//给链表赋值 { int i; for(i=1;i<n;i++) { node[i].a=i; node[i].r=&node[i+1]; node[i+1].l=&node[i]; } node[1].l=&node ;//1的左指针指向n node .r=&node[1];//n的右指针指向1 node .a=n; } void A(int x,int y)//把x移到y的左边 { Node *p=&node[x],*q=&node[y];//定义两个指针分别指向x和y p->l->r=p->r;//令 x的左边结点的右指针等于x的右指针 p->r->l=p->l;//令x的右边结点的左指针等于x的左指针 p->l=q->l;//令x的左指针等于y的左指针 p->r=q; // 令x的右指针指向y q->l->r=p; //令y的左边结点的右指针指向x q->l=p; //令y的左指针指向x } void B(int x,int y) { Node *p=&node[x],*q=&node[y]; p->l->r=p->r; p->r->l=p->l; p->l=q; p->r=q->r; q->r->l=p; q->r=p; } int main() { int n,k,s,b,c; char cmp; scanf("%d",&n); while(n--) { scanf("%d%d",&k,&s); build(k); while(s--) { scanf("%*c%c%d%d",&cmp,&b,&c); switch(cmp) { case 'A':A(b,c);break; case 'B':B(b,c);break; case 'Q':printf("%d\n",b?node[c].r->a:node[c].l->a);break; } } } return 0; }
相关文章推荐
- NYOJ 551 移动小球
- NYOJ-511 移动小球【模拟】
- NYOJ-移动小球
- NYOJ 511 - 移动小球 链表版
- [转]NYOJ-511-移动小球
- NYOJ 题目511 移动小球(双向循环链表)
- [转]NYOJ-511-移动小球
- NYOJ-511-移动小球
- NYOJ511 移动小球(链表基础题)(链表法+非链表法)
- NYOJ 511 移动小球
- NYOJ 511 移动小球
- 小球横向或者纵向移动
- LayaAir 自旋转的小球 横向移动
- 使用java实现持续移动的小球
- 哈理工OJ 1652(思维题)1652 小球移动.
- 原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
- Sicily课程作业 1934. 移动小球
- HTML for android 移动小球
- 通过重力感应小球移动位置
- 源码推荐(8.28):视频美化,可向任意方向移动的粘性小球