一种数组的实现

/*************************************************************************
   > File Name: ArrayListtttttttt.c
   > Author: fraze
   > Mail: [email protected] 
   > Created Time: Wed 10 Oct 2018 12:48:26 AM UTC
************************************************************************/

//写了一个数组,提供一些方法
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
struct Array//定义一个结构体array
{
	int *pBase;
	int cnt;
	int len;

};

//下面是函数声明
void InitArr();
bool AppendArr();
bool InsetArr();
bool DeleteArr();
bool IsEmpty();
bool IsFull();
bool SortArr();
bool RevereArr();
void ShowArr();

void InitArr(struct Array *parr,int len )  //初始化数组,传入两个参数
{
parr->pBase = (int *)malloc(sizeof(int) * len);
if(NULL==parr->pBase)
{
	printf("初始化失败\n");
	exit(-1);
}
else
{
	parr->cnt = 0;
	parr->len=len;
	printf("初始化成功\n");
}
return;
}

void ShowArr(struct Array *parr)   //显示数组元素
{	
if(IsEmpty(parr))
	printf("数组为空\n");
else
{
	for(int i=0;i<parr->cnt;++i)
	{
		printf("%d\n",parr->pBase[i]);

	}
}
return;
}

bool AppendArr(struct Array *parr,int val) //给数组追加一个元素,需要两个实参,指针和值
{
if(IsFull(parr))
{
	printf("数组已满,无法追加\n");
	return false;
}
else
{
	parr->pBase[parr->cnt] = val;
	(parr->cnt)++;
}
return true;


}

bool InsetArr(struct Array *parr,int val,int pos)    //在数组指定位置插入一个元素,pos为下标
{
int i;  //i用来记录移动次数
if(IsFull)
	printf("数组已满,无法插入参数");
	return false;
if(pos>parr->cnt)
	return false;
i = parr->cnt-pos;
int j = i; //j用来寻找插入位置
while(i)
{
	parr->pBase[i+pos]=parr->pBase[i+pos-1];
	i--;
}
parr->pBase[parr->cnt-j] = val;
(parr->cnt)++;
return true;


}

bool DeleteArr(struct Array *parr,int pos,int *val)//删除指定位置的一个元素
{
if(pos>=parr->cnt)
{
	
	printf("该位置无元素可以删除\n");
	return false;
}
*val=parr->pBase[pos];
for(int  i=pos;i<parr->cnt-1;i++)
{
	parr->pBase[i] = parr->pBase[i+1];

}
return true;

}

bool IsEmpty(struct Array *parr)//判断数组是否为空
{
if(parr->cnt==0)
	return true;
else
	return false;

}
bool IsFull(struct Array *parr)//判断函数书否为满
{
if(parr->cnt==parr->len)
	return true;
else
	return false;

}

bool SortArr(struct Array *parr)//数组进行排xu
{
int i;
int j;
int t=0;
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;
		}
	}
}
return true;
}

bool RevereArr(struct Array *parr)
{
int i = 0;
int j = parr->cnt-1;
int t=0;
while(i<j)
{
	t=parr->pBase[i];
	parr->pBase[i] = parr->pBase[j];
	parr->pBase[j] = t;
	i++;
	j--;
}
printf("交换完成\n");
return true;

}


int main(void)
{
//主函数可以自己调用函数
}`

猜你喜欢

转载自blog.csdn.net/fraze_py/article/details/83041688