Dạ em chào mọi người, đề bài của em là xử lí xung đột bằng danh sách liên kết. Đây là code của em:
#include <iostream>
using namespace std;
struct node
{
int value;
node* pNext;
};
typedef struct node NODE;
NODE* HASHTABLE[11];
void InitHashTable()
{
for (int i = 0; i < 11; i++)
{
HASHTABLE[i] = NULL;
}
}
int HashFucntion(int k)
{
return k % 11;
}
void Insert(int value, int i)
{
NODE* p, * k;
p = new NODE;
p->value = value;
p->pNext = NULL;
if (HASHTABLE[i] == NULL)
{
HASHTABLE[i] = p;
}
else
{
for (k = HASHTABLE[i]; k->pNext != NULL; k = k->pNext)
{
k->pNext = p;
}
}
}
void InPut(int a[])
{
for (int i = 0; i < 7; i++)
{
int hashIndex = HashFucntion(a[i]);
Insert(a[i], hashIndex);
}
}
void OutPut()
{
for (int i = 0; i < 11; i++)
{
cout << "key = " << i << ": ";
for (NODE* k = HASHTABLE[i]; k != NULL; k = k->pNext)
{
cout << k->value << " ";
}
cout << "\n";
}
}
int main()
{
InitHashTable();
int a[] = { 7, 12, 16, 20, 24, 40, 15 };
InPut(a);
OutPut();
return 0;
}
em chạy từng dòng code thấy vòng for của hàm Insert không chạy:
void Insert(int value, int i)
{
NODE* p, * k;
p = new NODE;
p->value = value;
p->pNext = NULL;
if (HASHTABLE[i] == NULL)
{
HASHTABLE[i] = p;
}
else
{
for (k = HASHTABLE[i]; k->pNext != NULL; k = k->pNext)
{
k->pNext = p;
}
}
}
em thắc mắc là tại sao vậy ạ