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

📄 hanshu.c

📁 数据结构 c语言版 约瑟夫问题 顺序表方法实现
💻 C
字号:
#include <stdio.h>
#include <malloc.h>
#include "opreations.h"



// 初始化操作
				
int init_list(Sqlist *D)
	{
		D->data=(ElemType *)malloc(sizeof(ElemType)*MaxSize);	// 储存空间的初始量
		D->data=malloc(MaxSize* sizeof *D->data);

		if ( !D->data ) {
							return 0;							// 创建失败返回0
						}

		// 创建成功,初始化字符串长度和顺序表长度	
		D->length=0;											// 长度为0
		D->listsize=MaxSize;									// 当前容量为初始量
		return 1;												// 创建成功返回
	}



void input_elem(Sqlist *D) //接受元素输入
	{
		int i;
		ElemType e;
		for(i=1;i<11;i++)
			{
				scanf(" %d",&e);
				printf("        %d\n",e);
				insert_elem(D,i,e);
			}
	}


//插入操作

int insert_elem(Sqlist *D,int i,ElemType x)
	{
		int j;
		if(i<1||i>D->length+1)	return 0;
		if(D->length==D->listsize)
			{
				D->data=(int *) realloc(D->data,(D->listsize+1)*sizeof(ElemType));
				D->listsize++;
			}
		for (j=D->length;j>=i;j--)
			D->data[j+1]=D->data[j];
		D->data[i-1]=x;
		D->length++;
		return 1;
	}



//删除操作

int delete_elem(Sqlist *D,int i,ElemType e)
	{
		int j;
		if (i<1||i>D->length)	return 0;
		e=D->data[i-1];
		for(j=i;j<D->length-1;j++)
			D->data[j-1]=D->data[j+1];
		D->length--;
		return e;						//删除成功
	}

//约瑟夫函数
void josephus(Sqlist *D,int i,int n)
	{
		int j=-1,k=0;
		ElemType e;
		printf("\n结果为:");
		while (i!=0)
		{	
			if(j=i)j=0;
			for (k=0;k!=n;k++)
				j++;
			e=D->data[j];
			printf("%d ",e);
			delete_elem(D,j,e);
			i--;
		}
	}


//输出操作

void output_list( Sqlist *D, int n ) /* 显示顺序表信息 */
	{
		int i,j;
		printf( "\n当前一共有 %u 个顺序表。每个表的数据如下:\n",n);
		for ( i = 0; i < n; i++ )
			{
				printf( "\n顺序表 %d :", i+1 );
				for ( j = 0; j < D[i].length; j++ ) 
					{
						printf( "%d  ", D[i].data[j] );
					}
				printf( "\n字符串长度:%u 顺序表长度:%u\n", D[i].length, D[i].listsize);
			}
	}



// 清空“输入缓冲区
void flush_stdin( void )
	{
		int c;

		if ( !feof(stdin) ) 
			{
				while( ( c=getchar() ) != '\n' && c != EOF );
			}
	}

//数组赋值
void fuzhi(Sqlist *A,Sqlist *B)
{
	int j,n;
	n=B->length;
	for ( j = 0; j < n ; j++)
		{
		insert_elem(A,j+1,B->data[j]);
		}			
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -