-void plist_insert_before(PList* list, PListElement* element, void* value) {
- PListElement* prevElement;
- PListElement* newElement = allocate_element(list);
+void plist_insert_front(plist_t *list, void *value)
+{
+ if (list->first_element != NULL) {
+ plist_insert_before(list, list->first_element, value);
+ }
+ else {
+ plist_element_t *newElement = allocate_element(list);
+
+ newElement->data = value;
+ newElement->prev = NULL;
+ newElement->next = NULL;
+ list->first_element = list->last_element = newElement;
+ list->element_count = 1;
+ }
+}
+
+void plist_insert_before(plist_t *list, plist_element_t *element, void *value)
+{
+ plist_element_t *prevElement;
+ plist_element_t *newElement = allocate_element(list);