动态数组的实现(顺序表)

已经很久没有写c程序了,结果写的错误连篇。。头文件总是不加中括号,调用函数习惯性地在前面加上invoke或是call,更多的错误是if和else前面总有那么一个点。。。

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
struct array{
	int *pBase;
	int len;
	int cnt;
};
int arr_init(struct array*,int);
bool arr_append(struct array*,int);
bool arr_insert(struct array*,int,int);
bool arr_delete(struct array*,int,int *);
int arr_insersion(struct array*);
int arr_sort(struct array*);
bool is_empty(struct array*);
bool is_full(struct array*);
int arr_show(struct array*);

int main()
{
	int val;
struct array arr;
arr_init(&arr,6);
arr_append(&arr,3);
arr_append(&arr,4);
arr_append(&arr,9);
arr_show(&arr);
arr_insert(&arr,1,7);
arr_show(&arr);
arr_insersion(&arr);
arr_show(&arr);
arr_sort(&arr);
arr_show(&arr);

system("pause");
return 0;
}
int arr_init(struct array *parr,int length){
parr->pBase=(int *)malloc(sizeof(int)*length);
if (parr->pBase==NULL)
{
printf("申请失败");
exit(-1);
}
parr->len=length;
parr->cnt=0;
return 0;
}
bool is_empty(struct array *parr)
{
if (!parr->cnt)
	return true;
else
	return false;
}
int arr_show(struct array *parr)
{
if (is_empty(parr))
	printf("the array is empty\n");
else
	for(int i=0;i<parr->cnt;i++)
	{
		printf("%d ",parr->pBase[i]);
	}
	printf("\n");
return 0;
}
bool is_full(struct array* parr)
{
if (parr->cnt==parr->len)
	return true;
else
	return false;
}
bool arr_append(struct array *parr,int val)
{
if(is_full(parr))
{
	printf("the array is full\n");
	return false;
}
else
	parr->pBase[(parr->cnt)++]=val;
return true;
}
bool arr_insert(struct array*parr,int pos,int val)//pos是要插入的位置,从0开始
{
if (is_full(parr))
	{
		printf("the array is full\n");
		return false;
	}
else if(pos<0||pos>parr->cnt-1)
	{
	printf("illagal pos\n");
	return false;
	}
else
	{
		for (int i=parr->cnt-1;i>=pos;i--)
			{
				parr->pBase[i+1]=parr->pBase[i];
			}
		parr->pBase[pos]=val;
		(parr->cnt)++;
		return true;
	}
}
bool arr_delete(struct array*parr,int pos,int *pval)
{
if(is_empty(parr))
	{
		printf("the array is empty\n");
		return false;
	}
else if(pos<0||pos>(parr->cnt-1))
{
printf("illage pos\n");
return false;
}
else
{
*pval=parr->pBase[pos];
for(int i=pos;i<=parr->cnt-1;i++)
{
	parr->pBase[i]=parr->pBase[i+1];
}

}
return true;
}
int arr_insersion(struct array*parr)
{
int i=0,j=parr->cnt-1;
while(i<j)
{
parr->pBase[i]=parr->pBase[i]^parr->pBase[j];
parr->pBase[j]=parr->pBase[i]^parr->pBase[j];
parr->pBase[i]=parr->pBase[i]^parr->pBase[j];
i++;
j--;
}
return 0;
}
int arr_sort(struct array*parr)
{
int i=0,j=0;
for(i=0;i<=(parr->cnt-2);i++)
	for(j=i+1;j<=(parr->cnt-1);j++)
	{
		if ((parr->pBase[i])>(parr->pBase[j]))
			{
				parr->pBase[i]=parr->pBase[i]^parr->pBase[j];
				parr->pBase[j]=parr->pBase[i]^parr->pBase[j];
				parr->pBase[i]=parr->pBase[i]^parr->pBase[j];
			}
	}
return 0;
}