C ++哈希表和链接列表问题

因此,我正在尝试为我的C ++类开发一个项目,在该项目中,我读取了一个.txt文件,此文件之后包含53行城市,州和多余的信息。

(例如:杰维斯港,纽约,纽约,36071,橙色,36071、41.3782,-74.6909、16410.0、1317)

读取文件后,我将城市名称(例如:杰维斯港)和州代码(例如:NY)分开,并将州代码中两个字母的值用作包含13个元素的哈希表的键。因此N = 13 + Y = 24 =密钥37,并且由于哈希具有13个元素,因此37%13 =哈希密钥为11。

到目前为止,一切都很好,我能够正确地完成所有工作,但是在显示结果时,我遇到了一个问题,因为哈希表的每个元素都缺少链接列表中的一个链接。因此它只显示53个中的40个输出,每个元素缺少1个,我真的不确定为什么。

因此,我通过电子邮件向教授发送了我的代码,他说我的插入方法不正确,他认为这是导致此错误的原因。我当前的插入方法看起来像

void insert(int key, string city, string state)//insert value
{ 
  int hash = KeyModFunction(key); //function that's %13 for hash-key
  Node* tmpInsert = new Node(key, city, state); //create node to work with


  if(table[hash]==NULL)//checks if table is empty
  {
    table[hash] = tmpInsert; //if empty, make new node with key/city/state values
  }
  else//if not empty
  {
    Node *runner = table[hash]; //made node to run through the list
    while(runner->next != NULL)//make it to the end
    {
      runner=runner->next; // go go go
    }
    runner->next = tmpInsert; //and point the end at the new node to be inserted
  }
} //end insert

我的教授建议它看起来应该更像

if(table[hash]->next == NULL)
{

table[hash]->next = tmpInsert;
table[hash]->myCity = city;
table[hash]->myState = state;

}
else
{
// You can figure out the else code based on the above

但是,每当我将其放入代码中时,它就不再编译并指出存在段错误。但是,当我通过调试器运行它时,它说“ [劣等1(进程5453)正常退出]”,我不会撒谎,我不确定这是什么意思,也无法在线找到具体答案。 。但是我假设正常退出是一件好事,但是什么也不显示。

这整个星​​期我一直在努力寻找解决方案,最后终于到了我知道自己对此感到头疼的地步,所以我来这里希望能找到一些解决方案指导,建议,或者至少有人指出我正确的方向。如果这里需要我的更多代码,请告诉我,我只是不想将整个项目都放在这里,因为我有理由想弄清楚它,而不是有人为我做,但是是的,我卡住了在此先感谢您的帮助!