Unhandled exception 有关问题

Unhandled exception 问题
本人用C++编写一个程序,编译没错,运行就出现Unhandled exception 问题了,求各位帮忙解决一下。代码如下:
头文件:LinkList.h:
#ifndef  __LINKLIST_H__
#define  __LINKLIST_H__
#include"iostream"
#include <stdlib.h>
#include<string>
#include<string.h>

using namespace std;

struct  LinkNode
{
string  name;
double  number;   //工号
double  telenumber;  //电话号码
LinkNode* next;
LinkNode(LinkNode *ptr=NULL){next=ptr;}
LinkNode(string name,double number,double telenumber):name(name),number(number),telenumber(telenumber){}
// LinkNode(string name,double number,double telenumber,LinkNode *next):
//         name(name),number(number),telenumber(telenumber),next(next){}
};

class LinkedList
{
public:
LinkedList(){first=NULL;}
~LinkedList(){Empty();};
void create();
LinkNode* delName(LinkNode *first,string name);  //按姓名删除
LinkNode* delNum(LinkNode* L,double i);        //按工号删除
bool insert(string name,double num,double tele,int i);       //插入
    LinkNode* searchName(/*LinkNode* L,*/string name);                  //按姓名查找
LinkNode* searchNum(double num);                  //按工号查找
LinkNode* searchTele(double tele);      //按电话查找
void Show();        //显示通讯录
LinkNode *first;     //头指针
private:
LinkNode * Locate(int i);
void  Empty();

};

void LinkedList::Empty()
{
LinkNode* q;
while(first!=NULL)
{
q=first->next;
first->next=q->next;
delete q;
}
}

void LinkedList::create()
{
LinkNode *newNode,*current= first;
string name;
double num,tele;
cout<<"请输入工号:"<<endl;
cin>>num;
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请输入电话号码:"<<endl;
cin>>tele;

    while(num>=0)
{
newNode=new LinkNode(name,num,tele);
if(newNode==NULL){cerr<<"存储分配错误!"<<endl;exit(1);}
current->next=newNode;   //问题就出在这里
current=newNode;  
cout<<"请输入工号:"<<endl;
cin>>num;
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<endl<<"请输入电话号码:"<<endl;
cin>>tele;
}
// current->next=NULL;
}

LinkNode* LinkedList::delName(LinkNode *first,string name)
{
cout<<"请输入删除人姓名: ";
cin>>name;
LinkNode *p=first;
if(p->next->name!=name)
{
p=p->next;
}
    p->next=p->next->next;
delete p;
return p;
}

LinkNode* LinkedList::delNum(LinkNode* L,double i)
{
LinkNode* p=L;
cin>>i;
if(p->number!=i)p=p->next;
delete p;
return p;
}

LinkNode * LinkedList::Locate(int i)
{
if(i<0)return NULL;