Benutzer:Riemer

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
<popup name="Klassen-Definitionen">
<code id="4f6a410984ee7">
public Object Link(int d) {
	int data = d;
	Object next;

	public int getKey() {
		return data;
	}

	public void displayLink() {
		System.out.print(data + " ");
	}
        return this;
}

public Object List() {
	Object first = null;
        Object last = null;
        int steps = 0;

	public void insert(Object theLink) {
                steps = 0;

		if (first == null) {
                        steps++;
			first = theLink;
			last = first;
		} else {
                        steps++;
			last.next = theLink;
			last = last.next;
		}
                System.out.println("Einfügen von: " + theLink.getKey() + " - Schritte: " + steps);
	}

	public Object delete(int key) {
		Object previous = null;
		Object current = first;
                Object temp = null;
                steps = 0;

		while (current != null && key != current.getKey()) {
                        steps++;
			previous = current;
			current = current.next;
		}

		if (previous == null) {
                        temp = first;
			first = first.next;
                        System.out.println("Schritte: " + steps);
                        return temp;
		} else {
                        temp = current;
			previous.next = current.next;
                        System.out.println("Schritte: " + steps);
                        return current;
                }
                System.out.println("Schritte: " + steps);
                return null;
	}

	public Object find(int key) {
                steps = 0;
		Object current = first;
		while (current != null) {
                        steps++;						
			if (current.getKey() == key) {
                                System.out.println("Schritte: " + steps);
				return current;
                        }
			current = current.next;
		}
                System.out.println("Schritte: " + steps);
		return null;
	}

	public void displayList() {
		System.out.print("List: ");
		Object current = first;
		while (current != null) {
			current.displayLink();
			current = current.next;
		}
		System.out.println("");
	}
        return this;
}

public Object HashChain(int size) {

	private int arraySize = size;

        private Object[] hashArray = new Object[arraySize];

        for (int i = 0; i < arraySize; i++) {
		hashArray[i] = List();
	}

	public void displayTable() {
		for (int j = 0; j < arraySize; j++) {
			System.out.print(j + ". ");
			hashArray[j].displayList();
		}
	}

	public int hashFunc(int key) {
		return key % arraySize;
	}

	public void insert(theLink) {
		int key = theLink.getKey();
		int hashVal = hashFunc(key);
		hashArray[hashVal].insert(theLink);
	}

	public Object delete(int key) {
		int hashVal = hashFunc(key);
		Object theLink = hashArray[hashVal].delete(key);
                return theLink;
	}

	public Object find(int key) {
		int hashVal = hashFunc(key);
		Object theLink = hashArray[hashVal].find(key);
		return theLink;
	}
        return this;
}

public void fillHashTable(Object hashTable, int numberOfKeys){
        for (int i = 0; i < numberOfKeys; i++) {
	        key = (int) (Math.random() * 10 * size);
	        dataItem = Link(key);
	        hashTable.insert(dataItem);
        }
}
</code>
</popup>

<run id="4f6a410984ee7">
size = 1;
numberOfKeys = 10;

hashTable = HashChain(size);
fillHashTable(hashTable, numberOfKeys);
hashTable.displayTable();
</run>

<run id="4f6a410984ee7">
size = 1;
numberOfKeys = 10;

hashTable = HashChain(size);
fillHashTable(hashTable, numberOfKeys);

hashTable.displayTable();

key = (int) (Math.random() * 10 * size);
dataItem = hashTable.find(key);

if (dataItem != null) {
	System.out.println(key + " wurde gefunden!");
} else {
	System.out.println(key + " konnte nicht gefunden werden!");
}
</run>

<run id="4f6a410984ee7">
size = 1;
numberOfKeys = 10;

hashTable = HashChain(size);
fillHashTable(hashTable, numberOfKeys);

hashTable.displayTable();

key = (int) (Math.random() * 10 * size);
dataItem = hashTable.delete(key);

if (dataItem != null) {
	System.out.println(key + " wurde gelöscht!");
} else {
	System.out.println(key + " konnte nicht gefunden werden!");
}
</run>