getduplicate neu
This commit is contained in:
parent
799667ed1c
commit
99a974cc9b
17
numbers.c
17
numbers.c
@ -71,21 +71,24 @@ unsigned int *createNumbers(unsigned int len) {
|
|||||||
// on errors.
|
// on errors.
|
||||||
unsigned int getDuplicate(const unsigned int *numbers, unsigned int len) {
|
unsigned int getDuplicate(const unsigned int *numbers, unsigned int len) {
|
||||||
if (!numbers || len < 2)
|
if (!numbers || len < 2)
|
||||||
return NULL; // Fehlerhaftes Array
|
return 0; // Sicherheit: kein Array oder zu kurz
|
||||||
|
|
||||||
TreeNode *root = NULL; // neuer Baum
|
TreeNode *root = NULL;
|
||||||
unsigned int duplicateValue = 0;
|
unsigned int duplicateValue = 0;
|
||||||
|
|
||||||
for (unsigned int i = 0; i < len; i++) {
|
for (unsigned int i = 0; i < len; i++) {
|
||||||
int isDuplicate = 0;
|
int isDuplicate = 0;
|
||||||
|
|
||||||
|
// Zahl in den Baum einfügen
|
||||||
root = addToTree(root, &numbers[i], sizeof(unsigned int),
|
root = addToTree(root, &numbers[i], sizeof(unsigned int),
|
||||||
compareUnsignedInt, &isDuplicate);
|
compareUnsignedInt, &isDuplicate);
|
||||||
if (isDuplicate) {
|
|
||||||
duplicateValue = numbers[i];
|
// Duplikat erkannt
|
||||||
break;
|
if (isDuplicate && duplicateValue == 0) {
|
||||||
|
duplicateValue = numbers[i]; // das erste Duplikat merken
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
clearTree(root);
|
clearTree(root); // Baum freigeben
|
||||||
return duplicateValue;
|
return duplicateValue; // 0, falls kein Duplikat
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user