zoukankan      html  css  js  c++  java
  • 魔术师发牌问题(循环链表)

    问题描述:
    魔术师手里一共有13张牌,全是黑桃,1~13.
    魔术师需要实现一个魔术:这是十三张牌全部放在桌面上(正面向下),
    第一次摸出第一张,是1,翻过来放在桌面上。
    第二次摸出从上往下数第二张,是2,翻过来 放在桌面上,(第一张放在最下面去,等会儿再摸),
    第三次摸出从上往下数第三张,是3,翻过来放在桌面上,(第一张和第二张 放在最下面去,等会儿再摸)
    以此类推 最后一张就是13

    #include <iostream>
    #include <malloc.h>
    
    using namespace std;
    
    
    typedef struct Node
    {
        int num;//牌号
        struct Node *next;
    }Node;
    
    
    Node *Create(int n)
    {
        Node *p,*q,*h=NULL;
        int i;
        for(i=1;i<=n;i++)
        {
            p=(Node*)malloc(sizeof(Node));
            p->num=0;//初始化为零
            if(h==NULL) h=p;
            else q->next=p;
            q=p;p->next=NULL;
        }
        p->next=h;
        h=p;
        return(h);//h为循环链表尾指针
    }
    
    
    int Display(Node * h)
    {
        Node * p=h->next;
        int i;
        i=(h->next==h)?0:1;//判断是否循环链表中只有一个元素
        cout<<p->num<<endl;
        p=p->next;
        while(p!=h)
        {
             cout<<p->num<<endl;
             p=p->next;
        }
        if(i) cout<<h->num<<endl;
        return 0;
    }
    
    
    int Magician(Node *H,int m)//m为牌的数目
    {
        int i=1,j;
        Node *q,*p=H;
        for(i=1;i<=m;i++)
        {
            for(j=0;j<i-1;j++)//p每次指向带插入位置的前一个位置
            {
                p=p->next;
                while(p->num)//已填入元素,可以当成已从链表中删去
                {
                    p=p->next;
                }
    
            }
            q=p->next;
            while(q->num)//已填入元素,可以当成已从链表中删去
            {
                q=q->next;
            }
            q->num=i;
            p=q;
        }
        return 0;
    }
    
    int main()
    {
        Node *H;
        H=Create(13);
        Magician(H,13);
        Display(H);
        return 0;
    }
    

      

    只有0和1的世界是简单的
  • 相关阅读:
    最少代码的瀑布流实现
    GoLang代码规范
    wcf基础知识之ListenUri和ListenUriMode实现 逻辑地址和物理地址的分离
    STL学习笔记 string
    Bitbucket上使用SSH协作
    使用注册表文件(REG)添加、 修改或删除注册表子项和值
    《大话设计模式》Python版代码实现
    go windows 32位环境搭建
    借书场景领域建模分析
    E/R模型学习
  • 原文地址:https://www.cnblogs.com/nullxjx/p/5954106.html
Copyright © 2011-2022 走看看