Probleme bei Hashtabelle mit Separate Chaining und Quicksort
-
Hey Leute,
Ich studiere Informatik an der Uni Wien und mache gerade eine Übung bei der ich C++ programmieren muss.
Auf meinem Rechner funktioniert alles einwandfrei, nur müssen wir das Programm dann bei dem sog. Unit-Test hochladen und der spuckt mir in meiner "apply-Methode" immer ein einen Segmentation Fault aus.
Die Apply und Sort Methode sieht folgendermaßen aus:
template <typename E, size_t N>
size_t Chaining<E,N>::apply(std::function<void(const E&) > f, Order order) const {size_t rc = 0;
if (order == dontcare) {
try {
for (size_t i = 0; i < tablesize; ++i) {
node * help = values[i];
while (help != nullptr) {
f(help->data);
++rc;
help = help->next;
}
}
} catch (...) {}
} else {E * sortvalues = new E[n];
size_t x = 0;
for (size_t i = 0 ; i < tablesize ; ++i) {
node * help = values[i];while (help != nullptr) {
sortvalues[x++] = help->data;
help = help->next;
}
}sort(sortvalues, 0, n-1);
try {
if (order == descending) {
for (size_t i = n; i--{
f(sortvalues[i]);
++rc;
}
} else {
for (size_t i = 0; i < n; ++i) {
f(sortvalues[i]);
++rc;
}
}
} catch (...) {}delete[] sortvalues;
}
return rc;
}template <typename E, size_t N>
void Chaining<E,N>::sort(E* sortvalues, size_t l, size_t r) const {if (n > r) {
size_t i, j;
E pivot;if (r > l) {
pivot = sortvalues[r];
i = l-1;
j = r;for (;;) {
while (pivot > sortvalues[++i]);
while (sortvalues[--j] > pivot) if (j == l) break;
if (i >= j) break;
std::swap (sortvalues[i], sortvalues[j]);
}
std::swap(sortvalues[i], sortvalues[r]);
sort(sortvalues, l, i-1);
sort(sortvalues, i+1, r);
}
}
}
-
Codetags?
Übersetbares Beispiel?
Wozu dient das try/catch? Willst du da Speicherzugriffsfehler abfangen?
Lässt du es "bei dir" im Debugger laufen?
Mal mit eingeschaltetem Optimizer versucht?
Welches Betriebssystem/Compiler überhaupt?
-
Scholler schrieb:
Hey Leute,
Ich studiere Informatik an der Uni Wien und mache gerade eine Übung bei der ich C++ programmieren muss.
Auf meinem Rechner funktioniert alles einwandfrei, nur müssen wir das Programm dann bei dem sog. Unit-Test hochladen und der spuckt mir in meiner "apply-Methode" immer ein einen Segmentation Fault aus.Danke für die Info.