aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenny Levinsen <kl@kl.wtf>2020-08-02 21:39:48 +0200
committerKenny Levinsen <kl@kl.wtf>2020-08-02 21:46:13 +0200
commit5b4d00d6cff955a31a2179d613dcaa3ade327d28 (patch)
tree99359d933ca07a404fd79a359991d426f0f3e1fd
parentb751481e5c0bed1b81b7c769923e772e9fd84e9d (diff)
list: Add list_pop_back
-rw-r--r--common/list.c9
-rw-r--r--include/list.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/common/list.c b/common/list.c
index 1a86837..d38daa0 100644
--- a/common/list.c
+++ b/common/list.c
@@ -74,3 +74,12 @@ void *list_pop_front(struct list *list) {
list_del(list, 0);
return item;
}
+
+void *list_pop_back(struct list *list) {
+ if (list->length == 0) {
+ return NULL;
+ }
+ void *item = list->items[list->length - 1];
+ list->length -= 1;
+ return item;
+}
diff --git a/include/list.h b/include/list.h
index 3f2ac6c..faeadd2 100644
--- a/include/list.h
+++ b/include/list.h
@@ -17,6 +17,7 @@ void list_del(struct list *list, size_t index);
void list_concat(struct list *list, struct list *source);
void list_truncate(struct list *list);
void *list_pop_front(struct list *list);
+void *list_pop_back(struct list *list);
size_t list_find(struct list *list, const void *item);
#endif