Write an array source code in C language
Dazai
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef enum
{
false,true
}bool;
struct Arr
{
int *pbase;
int len;
int cnt;
int increment;
};
void init_arr(struct Arr * pArr,int length);
bool append_arr(struct Arr * pArr,int *va);
bool insert_arr(struct Arr *pArr,int pos,int *vi);
bool delete_arr(struct Arr *pArr,int pos,int *pval);
int get();
bool is_empty(struct Arr * pArr);
bool is_full();
void sort_arr(struct Arr *pArr);
void show_arr(struct Arr * pArr);
void inversion_arr();
int main(void)
{
struct Arr arr;
int *vappend,*vinsert,q,c;
int val;
printf("\n\n--------------------------------------------------------------------------------------------------------\n");
printf("\t\t\t\t欢迎使用\t *不周* \t制作的数组\n");
printf("\t\t\t *******\t \t*******\n");
printf("\t\t\t ******\t \t******\n");
printf("\t\t\t *****\t \t*****\n");
printf("\t\t\t ****\t \t****\n");
printf("\t\t\t ***\t \t***\n");
printf("--------------------------------------------------------------------------------------------------------\n");
printf("\t\t\t\t***************系统功能菜单****************\n");
printf("\t\t\t\t------------------- --------------------\n");
printf("\t\t\t\t------ 0.退出数组信息 \n");
printf("\t\t\t\t------ 1.追加数组信息 \n");
printf("\t\t\t\t------ 2.插入数组信息 \n");
printf("\t\t\t\t------ 3.删除数组信息 \n");
printf("\t\t\t\t------ 4.排列数组信息 \n");
printf("您需要输入你想要对数组进行的操作\n\n");
init_arr(&arr,8);
show_arr(&arr);
for(q=0;;q++)
{
printf("请输入您要进行的操作:");
scanf("%d",&c);
if(c==0)
{
printf("您已成功退出系统!\n");
break;
}
else if(c==1)
{
printf("Please enter the num to append:");
append_arr(&arr,vappend);
show_arr(&arr);
}
else if(c==2)
{
insert_arr(&arr,1,vinsert);
show_arr(&arr);
}
else if(c==3)
{
delete_arr(&arr,1,&val);
show_arr(&arr);
}
else if(c==4)
{
sort_arr(&arr);
show_arr(&arr);
}
}
return 0;
}
void init_arr(struct Arr * pArr,int length)
{
pArr->pbase =(int *)malloc(sizeof(int)*length);
if(NULL==pArr->pbase )
{
printf("动态内存分配失败!\n");
exit(-1);
}
else
{
pArr->len =length;
pArr->cnt =0;
}
return;
}
bool append_arr(struct Arr * pArr,int *va)
{
if(is_full(pArr))
return false;
else
{
printf("请输入您要追加的数字:\n");
scanf("%d",&va);
pArr->pbase[pArr->cnt]=va;
(pArr->cnt)++;
return true;
}
}
bool insert_arr(struct Arr *pArr,int pos,int *vi)
{
int i;
if(is_full(pArr))
return false;
if(pos<1 || pos>pArr->cnt+1)
return false;
for(i=pArr->cnt-1;i>=pos-1;--i)
{
pArr->pbase[i+1]=pArr->pbase[i];
}
printf("请输入您要插入的数字:\n");
scanf("%d",&vi);
pArr->pbase[pos-1]=vi;
(pArr->cnt)++;
return true;
}
bool delete_arr(struct Arr *pArr,int pos,int *pval)
{
int i;
if(is_empty(pArr))
return false;
if(pos<1||pos>pArr->cnt)
return false;
*pval=pArr->pbase[pos-1];
for(i=pos;i<pArr->cnt;++i)
{
pArr->pbase[i-1]=pArr->pbase[i];
}
pArr->cnt--;
return true;
}
void sort_arr(struct Arr *pArr)
{
int i,j,t;
for(i=0;i<pArr->cnt;++i)
{
for(j=i+1;j<pArr->cnt;++j)
{
if(pArr->pbase[i]>pArr->pbase[j])
{
t=pArr->pbase[i];
pArr->pbase[i]=pArr->pbase[j];
pArr->pbase[j]=t;
}
}
}
printf("按顺序排列后的结果为:");
}
void show_arr(struct Arr * pArr)
{
int i;
if( is_empty(pArr ) )
{
printf("目前数组为空!\n");
}
else
{
printf("数组为:{");
for(i=0;i<pArr->cnt ;++i)
{
printf("%d,",pArr->pbase [i]);
}
printf("}\n");
}
}
bool is_empty(struct Arr * pArr)
{
if(0==pArr->cnt )
return true;
else
return false;
}
bool is_full(struct Arr * pArr)
{
if(pArr->cnt==pArr->len)
return true;
else
return false;
}