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

class List
{
private:
	int size;
	struct Node {
		int value;
		struct Node * next;};
	typedef struct Node * nodePtr;
	nodePtr startPtr;
public:
	List();
	~List();
	void addNode(int , int);
	void insert(int, nodePtr);
	int getInfo(int);
	nodePtr retrieve(int);
};


List::List()
{
	startPtr = NULL;
	size = 0;
}

void List::addNode(int info, int pos)
{
	nodePtr p;
	p = new Node;

	insert(pos, p);
}

void List::insert(int pos, nodePtr newPtr)
{
	nodePtr nextPtr;

	if(pos<0 && pos>size+1)
	{
		cout << "out of range" << endl;
		exit(1);
	}


	if(this->startPtr == NULL)
	{
		startPtr = newPtr;
	}
	else
	{
		if(pos==0)
		{
			newPtr->next = startPtr;
			startPtr = newPtr;
		}
		else
		{
			nextPtr = retrieve(pos);
			if(nextPtr!=NULL)
			{
				newPtr->next = nextPtr->next;
				nextPtr = newPtr;
			}
		}
		size++;
	}
}
	
nodePtr List::retrieve(int pos)
{
	nodePtr ptr = startPtr;

	if(startPtr != NULL)
	{
		for(int i=0; ptr != NULL, i!=pos; i++)
		{
			ptr = ptr->next;
		}
	}

	return ptr;
}

int main(void)
{
	return 0;
}
oookeeey, what the hell is going on?