【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《数据结构上机实验程序--猴子选大王》,欢迎阅读!
#include #include struct Monkeyking {
int data;
struct Monkeyking *next; };
void main() {
struct Monkeyking *head, *s, *q, *t,*p,*h; int n, k, count=0, i,j;
printf("输入猴子总数:"); scanf("%d",&k); printf("\n");
printf("输入报号起始猴子编号:"); scanf("%d",&j); printf("\n");
printf("输入报号间隔数:"); scanf("%d",&n); printf("\n");
for(i=0; i {
s=(struct Monkeyking *)malloc(sizeof(struct Monkeyking)); s->data=i+1; s->next=NULL; if(i==0) {
head=s; q=head; } else {
q->next=s; q=q->next; }
}//建立一个单链表
q->next=head;//将单链表组成环状 printf("输出猴子原始的编号:"); q=head;
while(q->next!=head) {
printf("%d ",q->data); q=q->next;
}//依次输出节点的值
printf("%d ",q->data); printf("\n"); printf("\n"); q=head;
for (i=0;i{p=q;
q=q->next; } q=p;
printf("输出被淘汰的猴子编号:"); if (n==1) {
for (i=1;i<=k;i++) { t=q;
q=q->next; t->next=h; h=t; }
for (i=1;i<=k;i++) {
printf("%d ",h->data);//倒序输出淘汰猴子的编号,第一个编号为大王 h=h->next; }
printf("\n"); } else { do {
count++;
if(count==n-1) {
t=q->next;
q->next=t->next; t->next=h; h=t; count=0; }
q=q->next; }
while(q->next!=q); q->next=h; h=q;
}
for(i=1;i<=k;i++) {
printf("%d ",h->data);//倒序输出淘汰猴子的编号,第一个编号为大王 h=h->next; } }
本文来源:https://www.wddqxz.cn/765a5234c6da50e2524de518964bcf84b9d52d67.html