您的位置:首页 > 编程语言 > C语言/C++

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

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

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#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;i<arr->len;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<j)
{
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;i<arr->len;i++)
{
for(j=0;j<arr->len-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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐