私は少し混乱しているこの学校の課題を持っています。
それが言っていることは次のとおりです。
「ハッシュに「チェーン」の手法を使用するプログラムを作成します。プログラムは、生成される各リンクリストへの参照を含む配列の長さを読み取ります。さらに、保存されるすべての値は、プログラムには、インデックスが存在する場所をハッシュするための別の関数が必要です。プログラムがリンクされたリストを生成したら、理論上の「負荷係数」を計算して出力する必要があります。配列全体を簡単に出力する必要があります。
私が混乱しているのは、生成される各リンクリストへの参照を含む配列の長さをプログラムが読み取る部分です。複数のリンクされたリストを生成することは可能ですか? その場合、どのようにしますか?
これは私が使用するように言われたクラスです:
public class EnkelLenke {
private Node head = null;
private int numOfElements = 0;
public int getNum()
{
return numOfElements;
}
public Node getHead()
{
return head;
}
public void insertInFront(double value)
{
head = new Node (value, head);
++numOfElements;
}
public void insertInBack(double value)
{
if (head != null)
{
Node this = head;
while (this.next != null)
this = this.next;
this.next = new Node(value, null);
}
else
head = new Node(value, null);
++numOfElements;
}
public Node remove(Node n)
{
Node last = null;
Node this = head;
while (this != null && this != n)
{
last = this;
this = this.next;
}
if (this != null)
{
if (last != null)
last.next = this.next;
else
head = this.next;
this.next = null;
--numOfElements;
return this;
}
else
return null;
}
public Node findNr(int nr)
{
Node this = head;
if (nr < numOfElements)
{
for (int i = 0; i < nr; i++)
this = this.next;
return this;
}
else
return null;
}
public void deleteAll()
{
head = null;
numOfElements = 0;
}
public String printAllElements() {
String streng = new String();
Node this = head;
int i = 1;
while(this != null)
{
streng = streng + this.element + " ";
this = this.findNext();
i++;
if(i > 5)
{
i = 1;
streng = streng + "\n";
}
}
return streng;
}
public double getValueWithGivenNode (Node n)
{
Node this = head;
while (this != null && this != n)
{
this = this.next;
}
if (this == n)
return this.element;
else
return (Double) null;
}
}
public class Node {
double element;
Node next;
public Node(double e, Node n)
{
element = e;
next = n;
}
public double findElement()
{
return element;
}
public Node findNext()
{
return next;
}
}