C中最简单的Arraylist实现

时间:2012-03-30 21:47:52

标签: c arraylist

我认为标题说明了我的大部分问题。

我是C的新手,我正在寻找使用arraylist库的最简单方法 在我的一个可执行文件中。

我有一种特殊类型的结构,我希望将其“提供”到列表中,然后能够轻松地添加,删除,迭代和访问我的所有元素。

我看了一下这个网站:

http://www.koders.com/c/fid4E4658B6DA7F7E9C331AC8D267BF5D9D6E5577C3.aspx

我从中复制并编译了我的程序,但无法弄清楚如何初始化arraylist。

因此,如果您还可以附上一个如何使用它的非常简单的示例,我也会非常感激。

提前谢谢大家。

1 个答案:

答案 0 :(得分:2)

arraylist_create的参数是指向a的函数指针 比较函数将2 Object s(通用指针)作为参数并返回 a Boolean表示参数是否被认为是相同的。

需要此功能,例如用于查找列表中的某个元素(arraylist_contains)。

它沿着这一行(缺少错误处理):

#include "arraylist.h"

typedef int the_type;

const Boolean compare_function(const Object a, const Object b) 
{
    return *(the_type*)a == *(the_type*)b;
}

int main(void) 
{
    Arraylist the_list;
    int x = 42, y = 23, z = 3, i;

    the_list = arraylist_create(compare_function);

    arraylist_add(the_list, &x);
    arraylist_add(the_list, &y);
    arraylist_add(the_list, &z);

    for (i = 0; i < arraylist_size(the_list); ++i) {
        /* the printf works just because the_type == int */
        printf("%i: %i\n", i, *(the_type*)arraylist_get(the_list, i));
    }

    arraylist_clear(the_list);
    arraylist_free(the_list);

    return 0;
}