鱼C论坛

 找回密码
 立即注册
查看: 3036|回复: 0

[学习笔记] 魔术师发牌算法:初始化、创建、录入数据

[复制链接]
发表于 2021-10-13 19:00:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
原理:

代码:
#include <stdio.h>
#include <stdlib.h>
#define MAXTSIZE 13

typedef struct Like
{
    int T;
    struct Like *next;
}Like, *Likes;

void InitList(Likes *E);     //创建头节点初始化链表
void GetList(Likes *E);     //在头节点之后创建MAXTSIZE个链表
void LoList(Like *E);       //向链表中写入数据
void PutAList(Like *E);     //确认链表是否创建成功

void LoList(Like *E)         //向链表中写入数据
{
    Like *temp = E->next;   //把循环链表的头节点传给临时变量

    for(int i = 0; i < MAXTSIZE; i++)       //一共就插入MAXTSIZE个数据
    {
        if(i != 0)              //加一个判断不然开始时不执行
        {
            for(int j = 0; j <= i; j++)     //向后循环i个节点
            {
                temp = temp->next;
                if(temp->T != 0)
                {
                    j--;        //本算法的误区在于循环中把已有数据的节点也算在里面了,如果有数据就略过
                }
            }
        }
        temp->T = i + 1;        //在本节点中插入数据
        PutAList(E);      //调试
    }

}
void PutAList(Like *E)
{
    Like *temp = E->next ;

    do
    {
        printf("<%d>", temp->T);
        temp = temp->next;
    }while(E->next != temp);
    putchar('\n');
}

void GetList(Likes *E)
{
    Like *temp, *tail;

    for(int i = 0; i < MAXTSIZE; i++)\
    {
        temp = (Likes )malloc(sizeof(Like ));
        temp->T = 0;
        temp->next = (*E)->next;

        if((*E)->next == *E)
        {
            (*E)->next = temp;
        }
        else
        {
            tail->next = temp;
        }
        tail = temp;
    }
}
void InitList(Likes *E)
{

    if(*E != NULL)
    {
        Like *temp = (*E)->next, *temps;
        do
        {
            temps = temp;
            temp = temp->next;
            free(temps);
        }while(temp != NULL);
    }
    else
    {
        *E = (Likes )malloc(sizeof(Like ));
    }
    (*E)->next = *E;
}

int main()
{
    Like *F = NULL;
    InitList(&F);
    GetList(&F);
    LoList(F);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表