#include <stdio.h>

struct entry
{
	int value;
	struct entry * next;
};

int main()
{
	void insertEntry(struct entry * list_pointer, struct entry * prev);
	struct entry *list_pointer, *prev;
	struct entry n1, n2, n3, n4;
	n1.value = 100;
	n1.next = &n2;
	n2.value = 200;
	n2.next = &n3;
	n3.value = 300;
	n3.next = &n4;
	n4.value = 400;
	n4.next = (struct entry *) 0;
	list_pointer = &n1;
	prev = &n2;

	printf("Before: \n");

	while (list_pointer != (struct entry *) 0) {
		printf("%i \n", list_pointer->value);
		list_pointer = list_pointer->next;
	}
	insertEntry(list_pointer, prev);
	printf("After: \n");
	list_pointer = &n1;
	while (list_pointer != (struct entry *) 0) {
		printf("%i\n", list_pointer->value);
		list_pointer = list_pointer->next;
	}
	return 0;
}

void insertEntry(struct entry * list_pointer, struct entry * prev)
{
	struct entry newEntry;
	newEntry.value = 555;
	printf("TEST 1\n");
	while (list_pointer != (struct entry *) 0) {

		if (list_pointer == prev) {
			printf("TEST 2\n");
			newEntry.next = list_pointer;
			list_pointer->next = &newEntry;
		}
		else
			list_pointer = list_pointer->next;
		printf("TEST 3\n");
	}
}
