#include <iostream>
using std::cout;
using std::endl;

struct list_node {
	int datum;
	struct list_node * next;
};

void add_at_end( struct list_node * , int );
void print_list( struct list_node * );
void delete_list( struct list_node * );

int main()
{
	struct list_node * list;

	list = new struct list_node;
	
	list->datum = 1;
	list->next = 0;

	print_list( list );

	add_at_end( list , 17 );

	print_list( list );

	add_at_end( list , 47 );

	print_list( list );

	add_at_end( list , 59 );
	
	print_list( list );
	
	return 0;
}

void add_at_end( struct list_node * list , int datum )
{
	/* get end of list */
	struct list_node * current = list;
	
	while (current->next != 0) {
		current = current->next;
	}
	
	current->next = new struct list_node;
	current->next->datum = datum;
	current->next->next = 0;
	
	return;
}

void print_list( struct list_node * list )
{
	struct list_node * current = list;
	while (current != 0) {
		cout << current->datum << endl;
		current = current->next;
	}
	cout << endl;
	
	return;
}

void delete_list( struct list_node *list )
{
	/* ??? */
}
}