list在c语言中的作用,用C语言写一个数组,实现类似JAVA语言中ArrayList的功能,javaarraylist...

用C语言写一个数组,实现类似JAVA语言中ArrayList的功能,javaarraylist

此程序是在看过郝斌老师的数据结构与算法的视频后,自己用C语言实现的。整个程序比较简单,适合入门数据结构时练手。

#include

#include

#include

#define true 1

#define false 0

typedef int bool;

struct Array

{

int *arrBase;

int maxlen; //最大长度

int len; //当前有效长度

};// 函数声明

void create_arr(struct Array *arr,int maxlen);// 构造一个list

bool append_arr(struct Array *arr,int value); // 向list最后一个位置添加元素

bool insert_arr(struct Array *arr,int pos,int value);//在第pos个位置上插入一个元素

bool delete_arr();

bool isEmpty(struct Array *arr);

bool isFull(struct Array *arr);

void show_arr(struct Array *arr);

void inverse_arr(struct Array *arr);

void sort_arr(struct Array *arr);

void create_arr(struct Array *arr,int maxlen)

{

arr->arrBase = (int *)malloc(sizeof(int)*maxlen);

arr->len=0;

arr->maxlen=maxlen;

}

bool append_arr(struct Array *arr,int value)

{

if(isFull(arr))

{

printf("数组已满,无法插入\n");

return false;

}

else{

arr->arrBase[arr->len]=value;

arr->len++;

}

}

bool isFull(struct Array *arr)

{

if(arr->len==arr->maxlen)

{

return true;

}else{

return false;

}

}

bool isEmpty(struct Array *arr)

{

if(0 == arr->len){

return true;

}

else{

return false;

}

}

bool insert_arr(struct Array *arr,int pos,int value)

{

int i;

if( pos<1 || pos > arr->len+1 || isFull(arr))

{

printf("插入位置不正确或者数据已满,无法插入");

return false;

}

for(i=arr->len;i>=pos;i--)

{

arr->arrBase[i]=arr->arrBase[i-1];

}

arr->arrBase[pos-1]=value;

arr->len++;

}

void show_arr(struct Array *arr)

{

int i;

for(i=0;ilen;i++)

{

printf("%d ",arr->arrBase[i]);

}

printf("\n");

}

void inverse_arr(struct Array *arr)

{

int i=0,j=arr->len-1;

int temp = 0;

while(i

{

temp = arr->arrBase[i];

arr->arrBase[i] = arr->arrBase[j];

arr->arrBase[j] = temp;

i++;

j--;

}

}

void sort_arr(struct Array *arr)

{

int i,j,temp;

for(i=0;ilen;i++)

{

for(j=0;jlen-i-1;j++)

{

if(arr->arrBase[j]>arr->arrBase[j+1])

{

temp = arr->arrBase[j];

arr->arrBase[j] = arr->arrBase[j+1];

arr->arrBase[j+1] = temp;

}

}

}

}

int main()

{

struct Array arr;

int maxlen = 5;

create_arr(&arr,maxlen);

append_arr(&arr,1);

append_arr(&arr,2);

append_arr(&arr,3);

printf("-------------插入前的数组元素值:---------------\n");

show_arr(&arr);

insert_arr(&arr,2,4);

printf("-------------插入后的数组元素值:---------------\n");

show_arr(&arr);

inverse_arr(&arr);

printf("------------- 倒序后的数组元素值:---------------\n");

show_arr(&arr);

sort_arr(&arr);

printf("------------- 排序后的数组元素值:---------------\n");

show_arr(&arr);

return 0;

}

相关文章暂无相关文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值