• 移动小球链表实现


    有一些小球,从左至右编号为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<stdio.h>
     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 }

    在此感谢这篇博客给我的帮助http://blog.csdn.net/taotaotaotao910429/article/details/7831479

  • 相关阅读:
    41. 缺失的第一个正数
    40. 组合总和 II
    39. 组合总和
    38. 外观数列
    35. 搜索插入位置
    设计模式(1)单例模式
    一篇文章彻底搞懂Java的大Class到底是什么
    Vue实现一个MarkDown编辑器
    7 二分搜索树的原理与Java源码实现
    6 手写Java LinkedHashMap 核心源码
  • 原文地址:https://www.cnblogs.com/boyiliushui/p/5026604.html
Copyright © 2020-2023  润新知