⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 约瑟夫环.txt

📁 数据结构学习用到的一些程序!!里面有二叉树相关的几个
💻 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 + -