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

来源:互联网 发布:怎么做数据分析 编辑:程序博客网 时间:2024/05/21 11:18

#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;

}

0 0