예제 #1
0
파일: dllist.c 프로젝트: lquan/OVS
void list_append (struct list *list, int data)
 {
  if (list==NULL) { return; }
  
  struct list_element *elem = list_new_elem(data);
  if (elem==NULL) { return; }
  
  assert(list!=NULL);
  if ( list->first == NULL && list->last == NULL)
   {
    list->first = elem;
    list->last  = elem;
    elem->prev  = elem;
    elem->next  = elem;
   }
   else
   {
    elem->prev = list->last;
    elem->next = list->first;
    
    //list->last->next = elem;
    //list->first->prev = elem;
    
    struct list_element *list_last_element = list->last;
    list_last_element->next = elem;
    
    struct list_element *list_first_element = list->first;
    list_first_element->prev = elem;
   
    list->last = elem;
   }

  return;
 }
// Instead of allocating the list directly, use a helper function
void list_push(struct list_t *lst, void *comp) {
  struct list_elem_t *e = list_new_elem(comp, lst->head);
  lst->head = e;
}