If you don't know how to create lists see Adding elements to Eina_List.
We start out with code that should be familiar by now: 
#include <stdio.h>
 
int
main(int argc, char **argv)
{
   (void)argc;
   (void)argv;
   void *list_data;
 
 
Eina_List * eina_list_append(Eina_List *list, const void *data)
Appends the given data to the given linked list.
Definition: eina_list.c:584
int eina_init(void)
Initializes the Eina library.
Definition: eina_main.c:279
structure of an iterator
Definition: eina_iterator.h:159
Type for a generic double linked list.
Definition: eina_list.h:318
 You can move elements around in a list using eina_list_move() or using eina_list_promote_list() and eina_list_demote_list() which move a list node to the head and end of the list respectively: 
 
Eina_List * eina_list_demote_list(Eina_List *list, Eina_List *move_list)
Moves the specified data to the tail of the list.
Definition: eina_list.c:889
Eina_List * eina_list_promote_list(Eina_List *list, Eina_List *move_list)
Moves the specified data to the head of the list.
Definition: eina_list.c:845
Eina_List * eina_list_nth_list(const Eina_List *list, unsigned int n)
Gets the nth member's list node in a list.
Definition: eina_list.c:1006
 Removing elements from a list can be done with ease: 
 
Eina_List * eina_list_remove(Eina_List *list, const void *data)
Removes the first instance of the specified data from the given list.
Definition: eina_list.c:773
 To replace an element in the list it is not necessary to remove it and then re-add with the new value, it is possible to just change the value of a node: 
 
static void * eina_list_data_set(Eina_List *list, const void *data)
Sets the list node data member.
Eina_List * eina_list_data_find_list(const Eina_List *list, const void *data)
Finds a member of a list and returns it as a list node.
Definition: eina_list.c:975
 We will now take a peek to see if the list still has the right number of elements: 
 
static unsigned int eina_list_count(const Eina_List *list)
Gets the count of the number of items in a list.
 Now that the list is in alphabetical order let's create a copy of it in reverse order and print every element to see if worked as expected: 
 
 
     printf("%s\n", (char*)list_data);
#define EINA_ITERATOR_FOREACH(itr, data)
Definition for the macro to iterate over all elements easily.
Definition: eina_iterator.h:448
void eina_iterator_free(Eina_Iterator *iterator)
Frees an iterator.
Definition: eina_iterator.c:98
Eina_List * eina_list_reverse_clone(const Eina_List *list)
Clones (copies) all the elements in the list in reverse order.
Definition: eina_list.c:1072
Eina_Iterator * eina_list_iterator_new(const Eina_List *list)
Returns a new iterator associated with a list.
Definition: eina_list.c:1574
- Note
- Always remember to free your iterators when done using them.
And as always release memory and shutdown eina before ending: 
 
 
 
   return 0;
}
Eina_List * eina_list_free(Eina_List *list)
Frees an entire list and all the nodes, ignoring the data contained.
Definition: eina_list.c:823
int eina_shutdown(void)
Shuts down the Eina library.
Definition: eina_main.c:350
 The full source code can be found on the examples folder on the eina_list_03.c file.