C语言 报数编程

发布网友

我来回答

2个回答

热心网友

#include <stdio.h>
struct ele{
int no;
struct ele *link;
}
main()
{
int n,m,i;
struct ele *h,*u,*p;
clrscr();
printf("Please input n&m:\n");
scanf("%d%d",&n,&m);/*输入n和m*/
h=u=(struct ele *)malloc(sizeof(struct

ele));/*形成首表元*/
h->no=1;
for(i=2;i<=n;i++)/*形成其余的n-1个表元*/
{
u->link=(struct ele *)malloc(sizeof(struct

ele));
u=u->link;
u->no=i;/*第i个表元置编号i*/
}
u->link=h;/*末表元后继首表元,形成环*/
puts("\nThe numbers of who will quit the

cycle in turn are:");
while(n)
{
for(i=1;i<m;i++)/*掠过m-1个表元*/
u=u->link;
p=u->link;/*p指向第m个表元*/
u->link=p->link;/*第m个表元从环中脱钩*/
printf("%4d",p->no);
free(p);/*释放第m个表元占用的空间*/
n--;
}
printf("\n\n Press any key to quit...\n");
getch();
}

热心网友

#include <stdio.h>
#define S() sizeof(struct quene)
typedef struct quene
{ int n;
struct quene *next;
} QUE;
QUE * fun1(int n);
int fun2(QUE *p);
int main()
{ int m,n,j,s;
QUE *p,*p2;
printf("n=");
scanf("%d",&n);
printf("m=");
scanf("%d",&m);
p=fun1(n);
j=1;p2=p;
while((p->next)!=p)
{ p=p->next;
if(++j==m)
{ j=1;p=p->next;
s=fun2(p2);
printf("%d ",s);
}
p2=p;
}
printf("%d\n",p->n);
}
QUE * fun1(int n)
{ QUE *head,*p1,*p2;
int i;
for(i=1;i<=n;i++)
{ p1=(QUE *)malloc(S());
if(i==1) head=p1;
else p2->next=p1;
p1->n=i;
p2=p1;
}
p1->next=head;
return head;
}
int fun2(QUE *p)
{ QUE *p2;
int n;
p2=p->next;
n=p2->n;
p->next=p2->next;
free(p2);
return n;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com