- #include"stdio.h"
- #include"stdlib.h"
- typedef struct node
- {
- char data[16];
- struct node *next;
- }*LinkList;
- LinkList InitList(LinkList L)
- {
- L=(LinkList)malloc(sizeof(struct node));
- L->next=L;
- return L;
- }
- void shuru(LinkList L,int N)
- {
- LinkList p,q;
- q=L;
- int i=0;
- while(i!=N)
- {
- p=(LinkList)malloc(sizeof(struct node));
- fflush(stdin);
- gets(p->data);
- p->next=L;
- q->next=p;
- q=p;
- i++;
- }
- p->next=L->next;
- }
- void shuchu(LinkList L,int N)
- {
- LinkList p=L,q,p1,p2;
- int W,S,i=0;
- printf("请你输入W和S: ");
- scanf("%d,%d",&W,&S);
- while(i!=W)
- {
- p=p->next;
- i++;
- }
- q=p->next->next;
- fflush(stdin);
- puts(q->data);
- p->next->next=q->next;
- p1=q->next;
- free(q);
- i=1;
- while(p1&&i!=N-1)
- {
- p2=p1->next->next;
- puts(p2->data);
- p1->next->next=p2->next;
- p1=p2->next;
- i++;
- }
- puts(p1->data);
- }
- void main()
- {
- LinkList L;
- int N;
- L=InitList(L);
- printf("请你输入N(N<=64): ");
- scanf("%d",&N);
- shuru(L,N);
- shuchu(L,N);
- }
- /*小孩报数问题*/
- /*有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,
- 该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,
- 直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序*/
- //该片段来自于http://www.codesnippet.cn/detail/120920135803.html
来源: http://www.codesnippet.cn/detail/120920135803.html