(c语言)链表方法:13个人一次报号,报道3的人退出,输出最后一个人

#include <stdio.h>

 

struct person

{

    int number;

    int nextp;

};

 

int main()

{

    struct person link[14];

    int i = 0;

    int count = 0;

    int h = 13;

 

    for( i = 1; i <= 13; i++ )            //将每个人赋值,

    {

        if( i == 13)

{

     link[i].nextp = 1;

}

else

{

    link[i].nextp = i+1;      //指向下一个人的标志

}

link[i].number = i;

    }

    printf("\n");

    printf("leave number:\n");

 

    while(count < 12)

    {

        i = 0;

while(i != 3)

{

     h = link[h].nextp;

     if(link[h].number)            //遇到0时,不计数,并指向下一个人

     {

         i++;

     }

}

printf("%4d ",link[h].number);

ink[h].number = 0;                          //将取过的数的值置0

count++;

    }

 

    printf("\nThe last one:\n");

    for( i = 1; i <= 13; i++ )

    {

        if(link[i].number)

{

     printf("%3d ",link[i].number); //最后一人的值不为0,其余人为0

}

    }

    printf("\n");

 

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值