Я работаю над назначением, где целые числа подаются в приложение, целые числа хэшируются, а затем помещаются в массив. Каждая позиция в массиве - это связанный список, который я написал. Моя проблема заключается в том, что я не могу указать, какую позицию в массиве следует использовать целым числам. В настоящее время мой вывод - это последние пять целых чисел, которые должны быть помещены для каждого местоположения в массиве, кроме позиции 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. Я не назначая который связан список, чтобы сделать новую целую часть. Есть правильный способ написать,
anArray[hash].last.next = current;
anArray[hash].last = current;
Я добавил операторы печати на оба КРП и другое заявление и я использую оба. Спасибо.
Выход
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
The предметы для индекса [7]: 619 655 703
Элементы для индекса [8]: 56
Элементы для индекса [9]: 345
Элементов для индекса [10]:
детали для индекса [11]: 23 47
Каждого целого числа помещается в ArrayList в правильном положении после того, как хэшированные.
прямо сейчас вы, кажется, писать его так, что он ожидает, что массив связанных списков. Это верно? –
Да. Разве я этого не делаю? – joerdie
Когда вы укажете свою проблему «Я не назначаю связанный список для создания новой целочисленной части», это означает, что новое хешированное целое помещается внутри связанного списка в определенной позиции. Но здесь вы добавляете связанные списки (с неизвестным содержимым) в массив связанных списков, надеюсь, в позиции, описываемой хэшированным целым числом. Это очень странное действие и не дает достаточного смысла просить разъяснений. –