/*
 * SPDX-FileCopyrightText: 2019-2023 Bruce Cowan <bruce@bcowan.me.uk>
 *
 * SPDX-License-Identifier: GPL-3.0-or-later
 */

#include <slist.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

static SList *
add_data (SList *list)
{
  char buffer[128];

  printf ("Input the data ");
  scanf ("%s", buffer);

  char *str = strdup (buffer);
  return slist_prepend (list, str);
}

static void
print_data (SList *list)
{
  SList *l;

  for (l = list; l; l = l->next)
      printf ("%s\n", (char*) l->data);
}

int
main(void)
{
  SList *list = nullptr;

  for (int i = 0; i < 3; i++)
    {
      list = add_data (list);
      print_data (list);
    }

  for (int i = 2; i >= 1; i--)
    {
      void *el = slist_nth (list, i)->data;
      list = slist_remove (list, el, nullptr);
    }
  puts ("After deletion: ");
  print_data (list);

  slist_free_all(list, nullptr);

  return 0;
}