| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #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, 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, *tmp;
- while(it != NULL) {
- tmp = it;
- it = it->next;
- free(tmp);
- }
- }
|