# include <stdio.h>
# include <malloc.h>
# include <STDLIB.H>
struct Arr
{
int * pBase;//存储数据的第一个元素的地址
int len;//数据的长度
int cnt;//当前数组有效元素的个数
};
void init_arr(struct Arr *pArr,int length);
void show_arr(struct Arr *pArr);
bool applend_arr(struct Arr *pArr,int val);
bool insert_arr(struct Arr *pArr,int pos,int val);
bool delete_arr(struct Arr *pArr,int pos,int *pVal);
int main(void)
{
struct Arr arr;
init_arr(&arr,6);
applend_arr(&arr,1);
applend_arr(&arr,2);
applend_arr(&arr,3);
applend_arr(&arr,4);
//insert_arr(&arr,1,99);
show_arr(&arr);
//printf("%d",arr.len);
return 0;
}
/************************************************************************/
/* 函数初始化:2013年4月5日19:44:37 */
/************************************************************************/
void init_arr(struct Arr *pArr,int length)
{
//array.len = 99;
//(*pArr).len = 9;
pArr->pBase = (int *)malloc(sizeof(int)*length);
if (NULL == pArr->pBase)
{
printf("动态内存分配失败\n");
exit(-1);
}
else
{
pArr->len = length;
pArr->cnt = 0;
}
return;
}
/************************************************************************/
/* 判断数组是否为空 */
/************************************************************************/
bool is_empty(struct Arr *pArr)
{
if (0 == pArr->cnt)
{
return true;
}
else
{
return false;
}
}
/************************************************************************/
/* 判断数组是否满 */
/************************************************************************/
bool is_full(struct Arr *pArr)
{
if (pArr->cnt > pArr->len)
{
return true;
}
else
{
return false;
}
}
/************************************************************************/
/* 输出数组 */
/************************************************************************/
void show_arr(struct Arr *pArr)
{
if (is_empty(pArr))
{
printf("数组为空!\n");
}
else
{
for(int i=0;i<pArr->cnt;i++)
{
printf("%d ",pArr->pBase[i]);
}
printf("%\n");
}
}
/************************************************************************/
/* 追加一个值 */
/************************************************************************/
bool applend_arr(struct Arr *pArr,int val)
{
//满时false
if (is_full(pArr))
{
return false;
}
//不满
pArr->pBase[pArr->cnt] = val;
(pArr->cnt)++;
return true;
}
/************************************************************************/
/* 在某个位置插入某个数 */
/************************************************************************/
bool insert_arr(struct Arr *pArr,int pos,int val)
{
int i;
if (pos <1 || pos > pArr->cnt+1)
{
return false;
}
for (i=pArr->cnt-1;i>=pos-1;i--)
{
pArr->pBase[i+1] = pArr->pBase[i];
}
pArr->pBase[pos-1]=val;
(pArr->cnt)++;
}
/************************************************************************/
/* 删除数组中的值 */
/************************************************************************/
bool delete_arr(struct Arr *pArr,int pos,int *pVal)
{
if(is_empty(pArr))
return false;
if (pos<1 || pos>pArr->cnt)
return false;
int i;
*pVal=pArr->pBase[pos-1];
for (i=pos;i<pArr->cnt;++i)
{
pArr->pBase[i-1] = pArr->pBase[i];
}
pArr->cnt--;
return true;
}
数据结构链表基本操作
最新推荐文章于 2023-10-25 16:05:38 发布