#include <stdio.h>
#include <malloc.h>
struct arry
{
int *pbase;
int cnt;
int lengh;
};
void init_arry(struct arry *Parr,int len);
bool Is_full(struct arry *ptr);
void Show_arry(struct arry *ptr);
bool append_arr(struct arry *ptr,int value);
bool Insert_arr(struct arry *ptr,int pos,int value);//pos插入的位置 从1开始
bool delet_arr(struct arry *ptr,int pos,int *pval);//pos删掉位置 *pval删掉的值
void Inversion_arr(struct arry *ptr);//倒置
void sort_arr(struct arry *ptr);//排序 升序
int find_arr(struct arry *ptr,int value);//查找某个元素 返回查找到的下标 没找到返回0
int main(void)
{
struct arry ptr;
int pval;
int find_val;
init_arry(&ptr,8);
append_arr(&ptr,2);
append_arr(&ptr,21);
append_arr(&ptr,82);
append_arr(&ptr,5);
append_arr(&ptr,8);
append_arr(&ptr,-59);
Insert_arr(&ptr,4,98);
delet_arr(&ptr,5,&pval);
Show_arry(&ptr);
printf("删掉的值=%d \n",pval);
Inversion_arr(&ptr);
printf("倒置的结果\n");
Show_arry(&ptr);
sort_arr(&ptr);
printf("排序的结果\n");
Show_arry(&ptr);
find_val=find_arr(&ptr,98);
printf("查找的数下标是:%d",find_val);
} //27
/************数组初始化**************/
void init_arry(struct arry *Parr,int len)
{
Parr->pbase =(int *)malloc(sizeof(int)*len);
if(Parr->pbase !=NULL)
{
Parr->lengh =len;
Parr->cnt =0;
}
return;
}
/***********判断数组是否为空*************/
bool Is_tempy(struct arry *ptr)
{
if(ptr->cnt ==0)
return true;
else
return false;
}
/********打印数组输出***********/
void Show_arry(struct arry *ptr)
{
int i=0;
if(Is_tempy(ptr)==false)
{
for(i=0;i<ptr->cnt ;i++)
{
printf("%d\n",ptr->pbase [i]);
}
}
} //59
/************判断数组是否为满****************/
bool Is_full(struct arry *ptr)
{
if(ptr->cnt>=ptr->lengh )
return true;
else
return false;
}
/************追加数组元素**************/
bool append_arr(struct arry *ptr,int value)
{
if(Is_full(ptr)==false)
{
ptr->pbase [ptr->cnt ]=value;
ptr-> cnt++;
}
return true;
}
/***********插入元素***********/
bool Insert_arr(struct arry *ptr,int pos,int value)//pos插入的位置 从1开始
{
int i;
if(Is_full(ptr)==false || pos>0 || pos<(ptr->cnt) )
{
for(i=(ptr->cnt -1);i>=(pos-1);i--)
{
ptr->pbase [i+1]=ptr->pbase [i];
}
ptr->pbase [pos-1]=value;
ptr->cnt ++;
return true;
}
else
return false;
}
/*************删除元素 100*********************/
bool delet_arr(struct arry *ptr,int pos,int *pval)//pos删掉位置 *pval删掉的值
{
int i=0;
*pval=ptr->pbase[pos-1];
if(Is_tempy(ptr)==false || pos>1 || pos<(ptr->cnt-1))
{
for(i=pos-1;i<=ptr->cnt-1;i++)
{
ptr->pbase [i]=ptr->pbase[i+1];
}
ptr->cnt --;
return true;
}
else
return false;
}
/************倒置***************/
void Inversion_arr(struct arry *ptr)
{
int i=0;
int j=(ptr->cnt -1);
int temp;
while(i<j)
{
temp=ptr->pbase [i];
ptr->pbase [i]= ptr->pbase [j];
ptr->pbase [j]=temp;
i++;
j--;
}
return;
}
/****************排序 升序********************/
void sort_arr(struct arry *ptr)
{
int i=0;
int j=0;
int temp;
for(i=0;i<ptr->cnt;i++)
{
for(j=i+1;j<ptr->cnt;j++)
{
if(ptr->pbase [i]>ptr->pbase [j])
{
temp=ptr->pbase [i];
ptr->pbase [i]= ptr->pbase [j];
ptr->pbase [j]=temp;
}
}
}
}
/****************查找元素***********************/
int find_arr(struct arry *ptr,int value)//查找某个元素 返回查找到的下标
{
int i;
for(i=0;i<ptr->cnt ;i++)
{
if(ptr->pbase [i]==value)
{
return i;
//break;
}
}
return 0;
}
网友评论