在 .h 文档中写下这个,调用这个 .h 头文件就可以用着个数组操作了
数组操作各函数与各个函数的功能:
void init(S *pArr,int length) 初始化一个数组
bool add(S *pArr,int val) 添加一个数
bool insert(S *pArr,int pos,int val) 插入一个数
bool sdelete(S *pArr,int pos,int *val) 删除一个数并返回被删除的数
bool ddelete(S *pArr,int pos) 删除一个数
bool is_empty(S *pArr) 判断数组是否为空
bool is_full(S *pArr) 判断数组是否满
void sort(S *pArr) 排序
void sshow(S *pArr) 输出
void inversion(S *pArr) 倒置
void clear(S *pArr) 移除列表中所有元素
bool contains(S *pArr,int arr) 判断有没有arr这个元素
写在 .h 文件中的实现代码:
#include <stdio.h>
#include <malloc.h>
#include <windows.h>
#define S struct Arr
struct Arr
{
int *a;
int len;
int cnt;
};
void init(S *pArr,int length) //初始化一个数组
{
pArr->a = (int *)malloc(sizeof(int) * length);
if(NULL == pArr->a)
{
printf("动态内存分配失败!\n");
exit(-1);
}
else
{
pArr->len = length;
pArr->cnt = 0;
}
return;
}
bool is_empty(S *pArr) //判断数组是否为空
{
if( 0 == pArr->cnt )
return true;
else
return false;
}
bool is_full(S *pArr) //判断数组是否满
{
if( pArr->cnt == pArr->len )
return true;
else
return false;
}
void sshow(S *pArr) // 输出
{
if( is_empty(pArr) )
{
printf("数组为空!\n");
}
else
{
for(int i=0;i<pArr->cnt;i++)
printf("%d\t",pArr->a[i]);
printf("\n");
}
}
bool add(S *pArr,int val) //添加一个数
{
if( is_full(pArr) )
{
return false;
}
else
{
pArr->a[pArr->cnt++]=val;
}
}
bool insert(S *pArr,int pos,int val) //插入一个数
{
if( is_full(pArr) )
return false;
if( pos<1 || pos>pArr->cnt+1 )
return false;
else
for(int i=pArr->cnt-1;i>=pos-1;--i)
pArr->a[i+1] = pArr->a[i];
pArr->a[pos-1] = val;
pArr->cnt++;
return true;
}
bool sdelete(S *pArr,int pos,int *val) //删除一个数并返回被删除的数
{
if( is_empty(pArr) )
return false;
if( pos<1 || pos>pArr->cnt)
return false;
*val = pArr->a[pos-1];
for(int i=pos;i<pArr->cnt;i++)
{
pArr->a[i-1] = pArr->a[i];
}
pArr->cnt--;
return true;
}
bool ddelete(S *pArr,int pos) //删除一个数
{
if( is_empty(pArr) )
return false;
if( pos<1 || pos>pArr->cnt)
return false;
for(int i=pos;i<pArr->cnt;i++)
{
pArr->a[i-1] = pArr->a[i];
}
pArr->cnt--;
return true;
}
void inversion(S *pArr) // 倒置
{
int temp,i=0,j=pArr->cnt-1;
while( i < j )
{
temp = pArr->a[i];
pArr->a[i++] = pArr->a[j];
pArr->a[j--] = temp;
}
return;
}
void sort(S *pArr) //排序
{
int i,j,temp;
for(i=0;i<pArr->cnt-1;i++)
{
for(j=i+1;j<pArr->cnt;j++)
{
if(pArr->a[i]>pArr->a[j])
{
temp = pArr->a[i];
pArr->a[i] = pArr->a[j];
pArr->a[j] = temp;
}
}
}
}
void clear(S *pArr) // 移除列表中所有元素
{
free(pArr);
pArr->cnt = 0;
}
bool contains(S *pArr,int arr) //判断有没有arr这个元素
{
int jl = 0;
for(int i;i<pArr->cnt;i++)
{
printf("%d\t",pArr->a[i]);
printf("\n");
if(arr == pArr->a[i])
{
jl = 1;
}
}
printf("%d\n",jl);
if(jl)
return true;
else
return false;
}
还有一些功能没有写,相信看过这个的同志会写出一些其他简单的功能!