📄 约瑟夫环.txt
字号:
#include<stdio.h>
#include<stdlib.h>
#define max 10 //定义环的容量
struct list //定义数据类型
{
int num;
int mima;
struct list *next;
};
typedef struct list node;
typedef node *link;
int data[2][max]= //数据值
{
1,3,5,7,2,4,6,8,9,10,
6,5,5,7,2,5,8,7,3,2
};
void print_list(link head) //打印子程序
{
int count=1;
link pointer;
pointer=head;
printf("输入的数据是:");
while(count<=max)
{
printf("[%d,%d]",pointer->num,pointer->mima);
pointer=pointer->next;
count++;
}
printf("\n");
}
link create_list(link head) //建立环形链表
{
link newnode;
link pointer;
int i;
head=(link)malloc(sizeof(node));
if(head==NULL)
printf("内存分配失败");
else
{
head->num=data[0][0];
head->mima=data[1][0];
head->next=NULL;
pointer=head;
for(i=1;i<max;i++)
{
newnode=(link)malloc(sizeof(node));
newnode->num=data[0][i];
newnode->mima=data[1][i];
newnode->next=NULL;
pointer->next=newnode;
pointer=newnode;
}
pointer->next=head;
}
return head;
}
void select(link head) //选择子程序
{
int p=10;
link pointer;
link back;
link recorder;
int counter=1;
pointer=head;
while(pointer->next!=pointer)
{
if(counter!=p)
{
back=pointer;
pointer=pointer->next;
counter++;
}
else
{
recorder=pointer;
pointer=pointer->next;
back->next=pointer;
printf("[%d,%d]",recorder->num,recorder->mima);
p=recorder->mima;
free(recorder);
counter=1;
}
}
printf("\n最后的数据是");
printf("[%d,%d]\n",pointer->num,pointer->mima);
}
void main()
{
link head=(link)malloc(sizeof(node));
head=create_list(head);
printf("表已建立\n");
print_list(head);
printf("依次淘汰的数据为");
select(head);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -