我正在做一个分配,其中整数被输入到应用程序中,整数被散列,然后放入一个数组中。数组中的每个位置都是我编写的链接列表。我的问题是我似乎无法指定整数应该在数组中的哪个位置。目前,我的输出是数组中每个位置的最后五个整数,除了位置 10,它是空的。任何帮助将不胜感激。谢谢你。
public class MyHashTab {
private static MyList last;
private static MyList first;
public MyHashTab(int initialCapacity, MyList[] anArray) {
}
public static void insert(int searchKey, MyList[] anArray) {
int hash = searchKey % anArray.length;
MyList current = new MyList(searchKey);
current.next = null;
if (anArray[hash] == null) {
current.next = null;
first = current;
last = current;
anArray[hash] = current;
} else {
last.next = current;
last = current;
}
}
public static void printHash(MyList[] anArray) {
System.out.println("The generated hash table with separate chaining is: ");
for (int i = 0; i < anArray.length; i++) {
if (anArray[i] == null) {
System.out.println("\nThe items for index[" + i + "]: ");
i++;
}
System.out.print("\nThe items for index[" + i + "]: ");
MyList temp = first;
while (temp != null) {
System.out.print(temp.iData + "\t");
temp = temp.next;
}
}
}
}
public class MyList {
int iData; // This integer is used as a key value, and as a way to see the actual node instead of it's memory address.
MyList next; // This is a pointer to a nodes right child.
public MyList(int searchKey) {
this.iData = searchKey;
}
}
我相信问题在于从第 26 行开始的 else 语句。我没有分配哪个链表来使新整数成为其中的一部分。有没有正确的写法,
anArray[hash].last.next = current;
anArray[hash].last = current;
我在 if 和 else 语句中都添加了 print 语句,并且我都在使用它们。谢谢你。
输出
The generated hash table with separate chaining is:
The items for index[0]: 366 976 312 244 655
The items for index[1]: 366 976 312 244 655
The items for index[2]: 366 976 312 244 655
The items for index[3]: 366 976 312 244 655
The items for index[4]: 366 976 312 244 655
The items for index[5]: 366 976 312 244 655
The items for index[6]: 366 976 312 244 655
The items for index[7]: 366 976 312 244 655
The items for index[8]: 366 976 312 244 655
The items for index[9]: 366 976 312 244 655
The items for index[10]:
The items for index[11]: 366 976 312 244 655
预期的输出应该是这样的。生成的带有单独链接的哈希表是:
索引 [0] 的项目:36 60 108 312
索引 [1] 的项目:85
索引 [2] 的项目:290 422
索引 [3] 的项目:99 135
索引 [4] 的项目:76 148 244 568 976
索引 [5] 的项目:29 173 245
索引 [6] 的项目:366
索引 [7] 的项目:619 655 703
索引 [8] 的项目]:56
索引 [9] 的项目:345
索引 [10]
的项目:索引 [11] 的项目:23 47
每个整数在经过哈希处理后放置在适当位置的数组列表中。