weixin_51994785 2021-12-16 16:18 采纳率: 0%
浏览 30

代码进入while循环出不来了

还有怎么计算散列表拉链法的平均查找长度


#include<fstream>
#include<iostream>
#include <string>  
#include<cstdlib>
using namespace std;  
const int MAX = 100;
struct Node
{
    int data;
    Node* next;
};
struct Node1
{
    Node* first;
};
typedef struct 
{
    string name;
    string phone;
    string add;
    int length;
    int count1;
}telephone;

class Hash 
{
public:
    Hash();//构造默认函数 
    ~Hash() ;//析构函数
    void Hashphone(telephone tele[]);//以名字构造哈希表 (开散列法)   
    void SearchName(string Sname); //查找名字(拉链法) 
    void ASL(telephone tele[]);//平均查找长度 
private:
    int len;
    int b[MAX];
    Node1* a[MAX];
};
void Hash::Hashname(telephone tele[]) 
{
    int b,n,y;
        for (int i = 0; i < MAX; i++)
    {
        a[i] = new Node1;
        a[i]->first = NULL;
        tele[i].count1=0;
    }
    Node *p = new Node;
    for (int i = 0; i < len; i++)
    {         
        n=tele[i].phone.size();
        b=0;
        b=b+tele[i].name[0]+tele[i].name[1]+tele[i].name[2]-200;  
        p->data =b;
        p->next = NULL;
        y = (b% 4);
        p->next = a[y]->first;
        a[y]->first = p;
    }
    for(int i=0;i<MAX;i++)
    {
        int b=0,extra;
        b=b+tele[i].name[0]+tele[i].name[1]+tele[i].name[2]-200;
        extra = (b% 4);
    if (a[extra]->first == NULL)
    {
        tele[i].count1=0;
    }
    else
    {
        Node*q = new Node;
        q = a[extra]->first;
        while (q->data != b && q->next != NULL)
        {
            q = q->next;
            tele[i].count1++;
        }
        if (q->data ==b)
            cout << tele[i].count1 << endl;
    }
    }
}
  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-12-16 16:21
    关注

    75行有修改q指针,怎么会死循环呢。你这不是循环链表吧
    71行完全可以删除
    49行这个循环也不行,怎么只在48行new一个节点对象呢,这样整个循环反复在修改同一个p

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月16日

悬赏问题

  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?