int main() {

  List *ls = ls_make();
  S_t *val1 = malloc(sizeof(S_t));
  val1->num = 5;
  
  S_t *val2 = malloc(sizeof(S_t));
  val2->num = 7;
  
  S_t *val3 = malloc(sizeof(S_t));
  val3->num = 9;
  
  S_t *val4 = malloc(sizeof(S_t));
  val4->num = 14;
  
  S_t *val5 = malloc(sizeof(S_t));
  val5->num = 2;
  
  S_t *val6 = malloc(sizeof(S_t));
  val6->num = 12;
  
  S_t *val7 = malloc(sizeof(S_t));
  val7->num = 6;
  
  S_t *val8 = malloc(sizeof(S_t));
  val8->num = 1;

  ls = ls_cons(ls_cons(ls_cons(ls_cons(ls_cons(ls_cons(ls_cons(ls_cons(ls, val6), val7), val8), val5), val4), val3), val2), val1);
  printf("list\n");
  ls_walk(ls, printer);
  printf("sorted C\n");
  ls_sort(ls, comparator);
  ls_walk(ls, printer);
  printf("list reverse\n");
  ls_reverse(ls);
  ls_walk(ls, printer);
  printf("list mapped\n");
  List *cp = ls_map(ls, copy_num);
  ls_walk(cp, printer);

  //clean up
  ls_free(ls, 1);
  ls = NULL;

  return 0;
}
Beispiel #2
0
list* ls_reverse(list* ls) {
  list* ret = NULL;
  list* i = ls;

  while (i) {
    ret = ls_cons(i->data, ret);
    ret->type = i->type;
    ret->flag = i->flag;
    i = i->next;
  }

  ls_free_shallow(ls);

  return ret;
}