Пример #1
0
int main()
{
    List *list = list_create();

    if (!list)
        std::cout << "List creation error\n";

    list_insert(list, 1);
    list_insert(list, 2);
    list_insert(list, 3);

    if (list_item_data(list_first(list)) != 3)
        std::cout << "list_insert error\n";

    list_insert_after(list, list_first(list), 4);

    if (list_item_data(list_item_next(list_first(list))) != 4)
        std::cout << "list_insert_after error\n";

    list_erase(list, list_first(list));

    if (list_item_data(list_first(list)) != 4)
        std::cout << "list_erase error\n";

    std::cout << "List: ";
    for (ListItem *item = list_first(list) ; item ; item = list_item_next(item))
    {
        std::cout << list_item_data(item) << " ";
    }
    std::cout << "\n";
    
    list_delete(list);
}
Пример #2
0
/// remove item from list, deleting node data if needed.
void *list_delete(List *ls, ListIter item) {
    void *data;
    if (item == NULL)
        return NULL;
    list_remove(ls, item);
    data = list_item_data(ls,item);
    if (list_is_container(ls))
        list_free_item(ls,item);
    return data;
}
Пример #3
0
void list_rforeach2_second(list_t* list, void (*proc)(void* item_data, void* user_data), void* user_data)
{
    list_item_t* item = list_last(list);
    
    while(item){
        proc(list_item_data(item), user_data);
        
        item = list_prev(item);
    }
}
Пример #4
0
void list_rforeach(list_t* list, void (*proc)(void* item_data))
{
    list_item_t* item = list_last(list);
    
    while(item){
        proc(list_item_data(item));
        
        item = list_prev(item);
    }
}
Пример #5
0
void list_foreach2_first(list_t* list, void (*proc)(void* user_data, void* item_data), void* user_data)
{
    list_item_t* item = list_first(list);
    
    while(item){
        proc(user_data, list_item_data(item));
        
        item = list_next(item);
    }
}
Пример #6
0
void list_foreach(list_t* list, void (*proc)(void* item_data))
{
    list_item_t* item = list_first(list);
    
    while(item){
        proc(list_item_data(item));
        
        item = list_next(item);
    }
}
Пример #7
0
list_item_t* list_find(list_t* list, void* data)
{
    list_item_t* item = list_first(list);
    
    while(item){
        if(list_item_data(item) == data) return item;
        
        item = list_next(item);
    }
    
    return item;
}
Пример #8
0
data stack_get(const Stack *stack)
{
	return list_item_data(list_first(stack->list));
}