测试时报运行时异常如何解决

###题目:【问题描述】

设计哈希表实现电话号码查询系统。要求实现以下功能:

1、哈希表中每个元素有下列数据项:电话号码、用户名、住址;

2、读入各个元素,以电话号码为关键字建立哈希表(哈希表的长度为8,存储位置为0到7);

3、采用除留余数法进行哈希表的散列,即以电话号码作为关键字,将电话号码的11位相加,按照模7取余;

4、采用链地址法解决冲突;

务必采用哈希表,如果采用其他查找方式,本题得分为0。
【输入形式】

第一行输入元素个数n

下面n行为输入的元素信息

下面若干行为查询信息,每行信息为一个电话号码,对应输出为姓名,如果没有这个结果则输出No Person

【输出形式】

根据输入中查询的元素信息,针对输出
【样例输入】

5

Zhangsan 13911233322 China

Lisi 15911225487 Baoding

Wangwu 13865894587 Ncepu

Liuliu 19845786987 Beijing

Liqi 16896874521 Xiongan

15911225487

19845786987

14523658745

【样例输出】

Lisi

Liuliu

No Person

#include<iostream>
#include<string>
using namespace std;
int hash1(int key){
    int key1=0;
    while(key>0){
        key1+=key%10;
        key=key/10;
    }
    key1=key1%7;
    return key1;
}
typedef struct hashnode{
    int key;
    string name;
    string address;
    struct hashnode* next;
}*phashnode;
void search(phashnode hst[],int key){
    int h=hash1(key);
    phashnode p=hst[h];
    while(p->key!=key){
        p=p->next;
        if(p==NULL){
            cout<<"No Person"<<endl;
        }
    }
cout<<p->name<<endl;
}
void insert1(phashnode hst[],int key,string name,string address){
    int h=hash1(key);
    if(hst[h]==NULL){
        phashnode q=new hashnode;
        q->key=key;
        q->name=name;
        q->address=address;
        q->next=NhLL;
        hst[h]->next=q;
    }
    else
    {
        phashnode s=hst[h];
        while(s->key!=key&&s->next!=NULL)
            s=s->next;
        if(s->key==key)
        return;
        else{
            phashnode q=new hashnode;
            q->key=key;
            q->next=NULL;
            s->next=q;
        }
    }
}
int main(){
    phashnode hst[7];
    int n;
    cin>>n;
    string name;
    string address;
    int key;
    for(int i=0;i<n;i++){    
        cin>>name>>key>>address;
        insert1(hst,key,name,address);
    }
    while(cin>>key){
        search(hst,key);
    }
return 0;
}````

q->next=NhLL;
改为
q->next=NULL;

img