zoukankan      html  css  js  c++  java
  • 移动小球链表实现

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

  • 相关阅读:
    方法的调用机制
    类的成员之二:方法
    类的成员之一:属性
    关键字static
    构造器
    this关键字
    递归方法(recursion)
    方法重载(二)
    GTID 跳过脚本
    mydumper 找不到libmysqlclient.so.20
  • 原文地址:https://www.cnblogs.com/boyiliushui/p/5026604.html
Copyright © 2011-2022 走看看