#include <stdio.h>
#include <string.h>
#include "algorithm.h"
#include "list.h"


void print_string(char* s)
{
  printf("%s\n", s);
}

char* str[10] =
{
  "Four",
  "Zero",
  "One",
  "Nine",
  "Five",
  "Eight",
  "Three",
  "Six",
  "Seven",
  "Two"
};

bool str_less(char *const& x, char *const& y)
  { return strcmp(x, y) < 0; }

int main()
{
  list<char*> l(&str[0], &str[10]);

  for_each(l.begin(), l.end(), print_string);
  printf("\n");

  for_each(l.rbegin(), l.rend(), print_string);
  printf("\n");

  l.sort();
  for_each(l.begin(), l.end(), print_string);
  printf("\n");

  l.sort(str_less);
  for_each(l.begin(), l.end(), print_string);
  printf("\n");

  list<char*>l2;

  for(int i = 0; i < 10; ++i)
    l2.push_front(str[i]);

  for_each(l2.begin(), l2.end(), print_string);
  printf("\n");

  for(i = 0; i < 10; ++i)
    l2.push_back(str[i]);

  for_each(l2.begin(), l2.end(), print_string);
  printf("\n");
}
