Thanks to Zuk for helping me past the sticking point yesterday, but now that I've modified the code a little to better fit the program requirements, I've run into problems. I stopped the code from simply advancing to the next node in the list for adding and modifying the info portions, and tried to make it ask the user which particular node he/she wants to add/modify. The outcome was that it would only add the first node, no matter which desired node number the user input, and the same with modifying the list thereafter. I got to thinking, and came up with the idea that it was because I hadn't created any nodes yet, so I decided to create a function that ran first in int main() called createEmptyList, which would initialize 5 nodes (length of list), with "" (empty) as the info portion of the nodes. The only problem with that is that I get the same old error, 'object reference not set to an instance of an object', which points to
temp->nextPtr = new linkedListNode(node);
. So, what is it I am doing wrong when I declare these new nodes? I never did find out what the problem was with my declarations. Relevant code below, entire .cpp file attached, if someone wants to look at it, don't want to post the whole thing here, would be lengthy and probably discourage posts.

createEmptyList() function:
__________________________________________________ ______
Code:
void linkedList::createEmptyList()
{
	char data[255]= ""; 
	linkedListNode node(data);
	linkedListNode *temp = new linkedListNode(node);
	temp = headPtr;
	for(int i = 1; i < 4; i++)
	{
		temp->nextPtr = new linkedListNode(node);  //boom!
		temp = temp->nextPtr;
	}
}
add() function:
__________________________________________________ ____
Code:
void linkedList::add(const linkedListNode& node, int i) //add/replace blank/existing on line i text w/node->value
{
	if(headPtr == 0) //if empty
	{
		headPtr = new linkedListNode(node); //node = head
		tailPtr = headPtr;//node also = tail
	}
	else //if not empty
	{
		linkedListNode *current = new linkedListNode(node); //create a tmp node with values of 'node' passed to function
		current = headPtr; //start at the head of the list
		static int count = 0; //set static counter to 0
		while(current->nextPtr) //while nextPtr (next element) exists
		{  
			count++; //increment counter (start at 1, since first element = 1)
		    if(count == i) //if line number == counter
			{
				break; //break out of the loop, because this is the line number we want to insert/overwrite
			}
			else // if (count != i)
			{
			current = current->nextPtr; //move on down the list, one element at a time
			}
		}
        int j; //new counter int
		for(j = 0; j <= i-count; j++) //if sequence wasn't completed with i-loop
		{
		tailPtr->nextPtr = new linkedListNode(); //go on creating empty nodes???? should I do this?
		tailPtr = tailPtr->nextPtr; //set tail = to new node just created at end
		}
	}
}
delete() function:
__________________________________________________ __________
Code:
void linkedList::deleteNode()
{
	 int lineNum;
	 cout << "Which line number would you like to delete?: " << endl;
	 cin >> lineNum;
     cin.ignore();
     linkedListNode *pred, *tmp;
	 if(lineNum == 1 && headPtr == tailPtr)
	 {
		 linkedListNode *tmp = headPtr;
		 headPtr = tailPtr = 0;
		 delete tmp;
	 }
     int i;
	 pred = headPtr;
	 tmp = headPtr->nextPtr;
     for(i = 1; i < lineNum; i++)
     {
           pred = pred->nextPtr;
           tmp = tmp->nextPtr;
     }
     if(tmp != 0)
     {
            pred->nextPtr = tmp->nextPtr;
            if(tmp == tailPtr)
            tailPtr = pred;
            delete tmp;
     }
}