一种数组的实现

1 篇文章 0 订阅
1 篇文章 0 订阅
/*************************************************************************
   > File Name: ArrayListtttttttt.c
   > Author: fraze
   > Mail: fraze700@gmail.com 
   > 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)
{
//主函数可以自己调用函数
}`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值