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

来源:互联网 发布:听英语的软件 编辑:程序博客网 时间:2024/05/18 00:28

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

#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define true 1#define false 0typedef int bool;struct Array{    int *arrBase;    int maxlen;    int len;};void create_arr(struct Array *arr,int maxlen);bool append_arr(struct Array *arr,int value);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;}


0 0
原创粉丝点击