13个人围成一圈,从第1个人开始顺序报号1,2,3.....要求用 链表 实现

2016-06-20 09:01:43  分类: c程序设计第四版谭浩强课后答案  参与:

 13个人围成一圈,从第1个人开始顺序报号1,2,3。凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用 链表 实现。

【c源程序】
#include <stdio.h>
#define N 13

struct person
 {int number;
  int nextp;
 } link[N+1];

int main()
 {int i,count,h;
  for (i=1;i<=N;i++)
    {if (i==N)
       link[i].nextp=1;
     else
       link[i].nextp=i+1;
     link[i].number=i;
    }
  printf("\n");
  count=0;
  h=N;
  printf("sequence that persons leave the circle:\n");
  while(count<N-1)
    {i=0;
     while(i!=3)
       {h=link[h].nextp;
     if (link[h].number)
     i++;
       }
     printf("%4d",link[h].number);
     link[h].number=0;
     count++;
    }
  printf("\nThe last one is ");
  for (i=1;i<=N;i++)
    if (link[i].number)
      printf("%3d",link[i].number);
  printf("\n");
  return 0;
}

来源:c程序设计第四版谭浩强课后答案

本文链接:http://www.wb98.com/c/post/tanhaoqiang_9.6.html

本站文章搜索:

<< 上一篇下一篇 >>

搜索

网站分类

Tags列表

赞助商链接