• 循环链表解决魔术师发牌问题


    C语言代码实现如下:

    #include <stdio.h>
    #include <stdlib.h>
    
    #define CardNumber 13
    
    typedef struct node {
        int data;
        struct node *next;
    }sqlist,*linklist;
    
    // 创建链表
    linklist CreateLinkList() {
        linklist head = NULL;
        linklist s,r;
        int i;
        r = head;
        for(i=1;i<=CardNumber;i++) {
            s = (linklist)malloc(sizeof(sqlist));
            s->data = 0;
            if(head==NULL){
                head = s;
            }else {
                r->next = s;
            }
            r = s;
        }
        r->next = head;
        return head;
    }
    
    // 发牌顺序
    void Magician(linklist head){
        linklist p;
        int j;
        int Countnumber = 2;
    
        p = head;
        p->data = 1; // 第一张牌放1
    
        while(1){
            for(j=0; j<Countnumber; j++){
                p = p->next;
                if(p->data != 0){   // 该位置有牌的话,则下一个位置
                    p->next;
                    j--;
                }
            }
    
            if(p->data == 0){
                p->data = Countnumber;
                Countnumber ++;
                if(Countnumber==14){
                    break;
                }
            }
        }
    }
    
    // 销毁工作
    
    void DestoryList(linklist* list){
        linklist q,p;
        p = (*list)->next;
        while(p!=list){
            q = p->next;
            free(p);
            p = q;
        }
        free(list);
        *list = NULL;
    }
    int main()
    {
        linklist p;
        int i;
        p = CreateLinkList();
        Magician(p);
    
        printf("按如下顺序排列:
    ");
        for(i=0;i<CardNumber;i++){
            printf("黑桃%d ", p->data);
            p = p->next;
        }
        DestoryList(p);
        return 0;
    }

    运行结果:

  • 相关阅读:
    js创建form添加input项目并提交表单
    DataTable 修改列名 删除列 调整列顺序
    文件夹右键出取得管理员所有权选项
    c#多线程
    js用计时器加载大量dom
    c# 将html添加进剪贴板(带格式)
    landa语法
    c# @符号后面对 双引号转义
    asp.net web api CORS
    IIS中发布网站的问题
  • 原文地址:https://www.cnblogs.com/ncuhwxiong/p/6933946.html
Copyright © 2020-2023  润新知