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); }
/// 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; }
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); } }
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); } }
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); } }
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); } }
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; }
data stack_get(const Stack *stack) { return list_item_data(list_first(stack->list)); }