📄 hanshu.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 + -