Commons Library  1.7.0
Cargando...
Buscando...
Nada coincide
list.h
Ir a la documentación de este archivo.
1/*
2 * Copyright (C) 2012 Sistemas Operativos - UTN FRBA. All rights reserved.
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#ifndef LIST_H_
18#define LIST_H_
19
20 #include "node.h"
21 #include <stdbool.h>
22
32 typedef struct {
33 t_link_element *head;
35 } t_list;
36
41 typedef struct {
43 t_link_element **actual;
44 t_link_element **next;
45 int index;
47
64
88 int list_add(t_list* self, void *element);
89
111 void list_destroy(t_list* self);
112
135 void list_destroy_and_destroy_elements(t_list* self, void(*element_destroyer)(void*));
136
155 void list_add_in_index(t_list* self, int index, void *element);
156
184 int list_add_sorted(t_list *self, void* data, bool (*comparator)(void*,void*));
185
208 void list_add_all(t_list* self, t_list* other);
209
229 void *list_get(t_list* self, int index);
230
257 void *list_get_minimum(t_list* self, void* (*minimum)(void*, void*));
258
285 void *list_get_maximum(t_list* self, void* (*maximum)(void*, void*));
286
306 t_list* list_take(t_list* self, int count);
307
329 t_list* list_slice(t_list* self, int start, int count);
330
352
374 t_list* list_slice_and_remove(t_list* self, int start, int count);
375
397 t_list* list_filter(t_list* self, bool(*condition)(void*));
398
421 t_list* list_map(t_list* self, void*(*transformer)(void*));
422
449
474 void *list_replace(t_list* self, int index, void* element);
475
506 void *list_replace_by_condition(t_list* self, bool(*condition)(void*), void* element);
507
530 void list_replace_and_destroy_element(t_list* self, int index, void* element, void(*element_destroyer)(void*));
531
552 void *list_remove(t_list* self, int index);
553
577 bool list_remove_element(t_list* self, void* element);
578
597 void list_remove_and_destroy_element(t_list* self, int index, void(*element_destroyer)(void*));
598
622 void *list_remove_by_condition(t_list* self, bool(*condition)(void*));
623
645 void list_remove_and_destroy_by_condition(t_list* self, bool(*condition)(void*), void(*element_destroyer)(void*));
646
668 void list_remove_and_destroy_all_by_condition(t_list *self, bool(*condition)(void*), void(*element_destroyer)(void*));
669
692 void list_clean(t_list* self);
693
711 void list_clean_and_destroy_elements(t_list *self, void(*element_destroyer)(void*));
712
736 void list_iterate(t_list* self, void(*closure)(void*));
737
767 void *list_find(t_list* self, bool(*closure)(void*));
768
785 int list_size(t_list* self);
786
800
824 void list_sort(t_list* self, bool (*comparator)(void *, void *));
825
852 t_list* list_sorted(t_list* self, bool (*comparator)(void *, void *));
853
875 int list_count_satisfying(t_list* self, bool(*condition)(void*));
876
904 bool list_any_satisfy(t_list* self, bool(*condition)(void*));
905
933 bool list_all_satisfy(t_list* self, bool(*condition)(void*));
934
953
985 void* list_fold(t_list* self, void* seed, void*(*operation)(void*, void*));
986
1013 void* list_fold1(t_list* self, void* (*operation)(void*, void*));
1014
1035
1040
1050
1055
1064 void list_iterator_add(t_list_iterator* iterator, void *data);
1065
1076
1086 void list_iterator_replace(t_list_iterator* iterator, void *data);
1087
1093
1094#endif /*LIST_H_*/
void * list_fold(t_list *self, void *seed, void *(*operation)(void *, void *))
Devuelve un valor que resulta de aplicar la operacion entre todos los elementos de la lista,...
void list_iterator_replace(t_list_iterator *iterator, void *data)
Reemplaza el elemento actual de la iteración por otro.
t_list * list_flatten(t_list *self)
Retorna una nueva lista con los elementos de la lista de listas recibida.
void * list_iterator_next(t_list_iterator *iterator)
Avanza hacia el siguiente elemento a iterar de la lista y lo devuelve.
int list_count_satisfying(t_list *self, bool(*condition)(void *))
Cuenta la cantidad de elementos de la lista que devuelven true al aplicarles la condición.
void * list_remove(t_list *self, int index)
Remueve un elemento de la lista de una determinada posicion y lo retorna.
void * list_get_minimum(t_list *self, void *(*minimum)(void *, void *))
Retorna el minimo de la lista según el comparador.
void * list_replace(t_list *self, int index, void *element)
Coloca un elemento en una de la posiciones de la lista retornando el valor anterior.
int list_add(t_list *self, void *element)
Agrega un elemento al final de la lista.
int list_size(t_list *self)
Retorna el tamaño de la lista.
bool list_is_empty(t_list *self)
Verifica si la lista esta vacia.
void * list_get_maximum(t_list *self, void *(*maximum)(void *, void *))
Retorna el maximo de la lista según el comparador.
bool list_remove_element(t_list *self, void *element)
Remueve al elemento de la lista recibido por parámetro.
void list_add_all(t_list *self, t_list *other)
Agrega todos los elementos de la segunda lista al final de la primera.
t_list * list_filter(t_list *self, bool(*condition)(void *))
Retorna una nueva lista con los elementos que cumplen la condicion.
t_list * list_duplicate(t_list *self)
Crea una lista nueva con los mismos elementos que la original.
void list_remove_and_destroy_element(t_list *self, int index, void(*element_destroyer)(void *))
Remueve un elemento de la lista de una determinada posicion y libera la memoria.
void list_replace_and_destroy_element(t_list *self, int index, void *element, void(*element_destroyer)(void *))
Coloca un valor en una de la posiciones de la lista liberando el valor anterior.
t_list * list_slice_and_remove(t_list *self, int start, int count)
Retorna una nueva lista con los primeros n elementos partiendo desde el índice indicado,...
t_list * list_slice(t_list *self, int start, int count)
Retorna una nueva lista con los primeros n elementos partiendo desde el índice indicado.
void * list_replace_by_condition(t_list *self, bool(*condition)(void *), void *element)
Coloca un elemento en la posición de la lista que cumpla con la condición, retornando el valor anteri...
void list_iterate(t_list *self, void(*closure)(void *))
Itera la lista llamando al closure por cada elemento. En caso de querer modificar la lista durante la...
bool list_iterator_has_next(t_list_iterator *iterator)
Devuelve true si quedan elementos de la lista por recorrer.
void list_remove_and_destroy_by_condition(t_list *self, bool(*condition)(void *), void(*element_destroyer)(void *))
Remueve y libera el primer elemento de la lista que haga que condition devuelva true.
t_list * list_sorted(t_list *self, bool(*comparator)(void *, void *))
Retorna una lista nueva ordenada segun el comparador.
void * list_remove_by_condition(t_list *self, bool(*condition)(void *))
Remueve el primer elemento de la lista que haga que condition devuelva true.
int list_iterator_index(t_list_iterator *iterator)
Devuelve el índice del elemento actual de la iteración.
void list_destroy_and_destroy_elements(t_list *self, void(*element_destroyer)(void *))
Destruye una lista y sus elementos contenidos llamando a la función element_destroyer sobre cada uno ...
void list_clean(t_list *self)
Quita todos los elementos de la lista, sin liberarlos.
int list_add_sorted(t_list *self, void *data, bool(*comparator)(void *, void *))
Agrega un elemento a una lista ordenada, manteniendo el orden definido por el comparador.
void list_iterator_remove(t_list_iterator *iterator)
Remueve de la lista al elemento actual de la iteración.
bool list_all_satisfy(t_list *self, bool(*condition)(void *))
Determina si todos los elementos de la lista devuelven true al aplicarles la condición.
void list_iterator_destroy(t_list_iterator *iterator)
Finaliza la instancia de iteración externa liberando sus recursos.
void * list_find(t_list *self, bool(*closure)(void *))
Retorna el primer valor encontrado, el cual haga que condition devuelva true, o NULL en caso de no en...
void list_clean_and_destroy_elements(t_list *self, void(*element_destroyer)(void *))
Quita todos los elementos de la lista y los libera llamando a la función element_destroyer sobre cada...
void * list_fold1(t_list *self, void *(*operation)(void *, void *))
Devuelve un valor que resulta de aplicar la operacion entre todos los elementos de la lista,...
void list_destroy(t_list *self)
Destruye una lista sin liberar los elementos contenidos en los nodos.
void list_remove_and_destroy_all_by_condition(t_list *self, bool(*condition)(void *), void(*element_destroyer)(void *))
Remueve y destruye todos los elementos de la lista que hagan que condition devuelva true.
void list_add_in_index(t_list *self, int index, void *element)
Agrega un elemento en una posicion determinada de la lista.
bool list_any_satisfy(t_list *self, bool(*condition)(void *))
Determina si algún elemento de la lista devuelve true al aplicarle la condición.
t_list * list_take(t_list *self, int count)
Retorna una nueva lista con los primeros n elementos.
t_list * list_take_and_remove(t_list *self, int count)
Retorna una nueva lista con los primeros n elementos, eliminando del origen estos elementos.
t_list * list_map(t_list *self, void *(*transformer)(void *))
Retorna una nueva lista con los elementos transformados.
void * list_get(t_list *self, int index)
Retorna el contenido de una posicion determinada de la lista.
t_list_iterator * list_iterator_create(t_list *list)
Inicializa una iteración externa de la lista. Permite recorrer la lista y modificarla al mismo tiempo...
void list_sort(t_list *self, bool(*comparator)(void *, void *))
Ordena la lista segun el comparador.
t_list * list_create(void)
Crea una lista.
void list_iterator_add(t_list_iterator *iterator, void *data)
Agrega a la lista un elemento delante del actual y detrás del siguiente. Luego, avanza hacia el eleme...
Iterador de listas. Inicializar con list_iterator_create()
Definition list.h:41
t_list * list
Definition list.h:42
t_link_element ** next
Definition list.h:44
t_link_element ** actual
Definition list.h:43
int index
Definition list.h:45
Estructura de una lista enlazada. Inicializar con list_create()
Definition list.h:32
t_link_element * head
Definition list.h:33
int elements_count
Definition list.h:34