| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #include "list.h"
- ListNode* list_init_head(void* data) {
- ListNode* new = (ListNode*)malloc(sizeof(ListNode));
- new->data = data;
- new->next = NULL;
- return new;
- }
- ListNode* list_add(ListNode* head, void* data) {
- ListNode* new = (ListNode*)malloc(sizeof(ListNode));
- new->data = data;
- new->next = NULL;
- if(head == NULL)
- head = new;
- else {
- ListNode* it;
- for(it = head; it->next != NULL; it = it->next)
- ;
- it->next = new;
- }
- return head;
- }
- ListNode* list_find(ListNode* head, const void* data) {
- ListNode* it;
- for(it = head; it != NULL; it = it->next)
- if(it->data == data) break;
- return it;
- }
- ListNode* list_element_at(ListNode* head, uint16_t index) {
- ListNode* it;
- uint16_t i;
- for(it = head, i = 0; it != NULL && i < index; it = it->next, i++)
- ;
- return it;
- }
- ListNode* list_remove(ListNode* head, ListNode* ep) {
- if(head == NULL) {
- return NULL;
- }
- if(head == ep) {
- ListNode* new_head = head->next;
- free(head);
- return new_head;
- }
- ListNode* it;
- for(it = head; it->next != ep; it = it->next)
- ;
- it->next = ep->next;
- free(ep);
- return head;
- }
- void list_free(ListNode* head) {
- ListNode* it = head;
- ListNode* tmp;
- while(it != NULL) {
- tmp = it;
- it = it->next;
- free(tmp);
- }
- }
|