### Struct

# GLib SList

since: 2.0

#### Description

    struct GSList {
      gpointer data;
      GSList* next;
    }

The `GSList` struct is used for each element in the singly-linked list.

###### Structure members

`data`

  Holds the element’s data, which can be a pointer to any kind of data, or any integer value using the [Type Conversion Macros][glib-Type-Conversion-Macros]

`next`

  Contains the link to the next element in the list.

Available since: 2.0

#### Functions

###### g_slist_alloc

Allocates space for one `GSList` element. It is called by the g_slist_append(), g_slist_prepend(), `g_slist_insert()` and `g_slist_insert_sorted()` functions and so is rarely used on its own.

since: 2.0

###### g_slist_append

Adds a new element on to the end of the list.

since: 2.0

###### g_slist_concat

Adds the second `GSList` onto the end of the first `GSList`. Note that the elements of the second `GSList` are not copied. They are used directly.

since: 2.0

###### g_slist_copy

Copies a `GSList`.

since: 2.0

###### g_slist_copy_deep

Makes a full (deep) copy of a `GSList`.

since: 2.34

###### g_slist_delete_link

Removes the node link_ from the list and frees it. Compare this to `g_slist_remove_link()` which removes the node without freeing it.

since: 2.0

###### g_slist_find

Finds the element in a `GSList` which contains the given data.

since: 2.0

###### g_slist_find_custom

Finds an element in a `GSList`, using a supplied function to find the desired element. It iterates over the list, calling the given function which should return 0 when the desired element is found. The function takes two #gconstpointer arguments, the `GSList` element’s data as the first argument and the given user data.

since: 2.0

###### g_slist_foreach

Calls a function for each element of a `GSList`.

since: 2.0

###### g_slist_free

Frees all of the memory used by a `GSList`. The freed elements are returned to the slice allocator.

since: 2.0

###### g_slist_free_1

Frees one `GSList` element. It is usually used after g_slist_remove_link().

since: 2.0

###### g_slist_free_full

Convenience method, which frees all the memory used by a `GSList`, and calls the specified destroy function on every element’s data.

since: 2.28

###### g_slist_index

Gets the position of the element containing the given data (starting from 0).

since: 2.0

###### g_slist_insert

Inserts a new element into the list at the given position.

since: 2.0

###### g_slist_insert_before

Inserts a node before `sibling` containing `data`.

since: 2.0

###### g_slist_insert_sorted

Inserts a new element into the list, using the given comparison function to determine its position.

since: 2.0

###### g_slist_insert_sorted_with_data

Inserts a new element into the list, using the given comparison function to determine its position.

since: 2.10

###### g_slist_last

Gets the last element in a `GSList`.

since: 2.0

###### g_slist_length

Gets the number of elements in a `GSList`.

since: 2.0

###### g_slist_nth

Gets the element at the given position in a `GSList`.

since: 2.0

###### g_slist_nth_data

Gets the data of the element at the given position.

since: 2.0

###### g_slist_pop_allocator

No description available.

since: 2.0

###### g_slist_position

Gets the position of the given element in the `GSList` (starting from 0).

since: 2.0

###### g_slist_prepend

Adds a new element on to the start of the list.

since: 2.0

###### g_slist_push_allocator

No description available.

since: 2.0

###### g_slist_remove

Removes an element from a `GSList`. If two elements contain the same data, only the first is removed. If none of the elements contain the data, the `GSList` is unchanged.

since: 2.0

###### g_slist_remove_all

Removes all list nodes with data equal to `data`. Returns the new head of the list. Contrast with `g_slist_remove()` which removes only the first node matching the given data.

since: 2.0

###### g_slist_remove_link

Removes an element from a `GSList`, without freeing the element. The removed element’s next link is set to `NULL`, so that it becomes a self-contained list with one element.

since: 2.0

###### g_slist_reverse

Reverses a `GSList`.

since: 2.0

###### g_slist_sort

Sorts a `GSList` using the given comparison function. The algorithm used is a stable sort.

since: 2.0

###### g_slist_sort_with_data

Like g_slist_sort(), but the sort function accepts a user data argument.

since: 2.0