This commit is contained in:
Walter Schenk 2025-12-14 21:56:08 +01:00
parent f46e9b06d9
commit 8449734941

View File

@ -32,10 +32,11 @@ unsigned int* createNumbers(unsigned int len)
int isDuplicate = 0; int isDuplicate = 0;
int number = rand() % (2 * len) + 1; int number = rand() % (2 * len) + 1;
int* array = malloc(len*sizeof(int));
numbers = addToTree(NULL, &number, sizeof(int), compareFct, &isDuplicate); numbers = addToTree(NULL, &number, sizeof(int), compareFct, &isDuplicate);
array[0] = number;
for (int i = 0; i < len; i++) for (int i = 1; i < len; i++)
{ {
number = rand() % (2 * len) + 1; number = rand() % (2 * len) + 1;
addToTree(numbers, &number, sizeof(int), compareFct, &isDuplicate); addToTree(numbers, &number, sizeof(int), compareFct, &isDuplicate);
@ -43,28 +44,19 @@ unsigned int* createNumbers(unsigned int len)
{ {
isDuplicate = 0; isDuplicate = 0;
i--; i--;
}else{
array[i] = number;
} }
} }
int duplicatePosition = rand() % len; int duplicatePosition1 = rand() % len;
TreeNode *duplicate = nextTreeData(numbers); int duplicatePosition2 = rand() % len;
for (int i = 0; i < duplicatePosition; i++) while(duplicatePosition2 == duplicatePosition1){
{ duplicatePosition2 = rand() % len;
duplicate = nextTreeData(NULL);
} }
addToTree(numbers, duplicate->data, sizeof(int), compareFct, NULL); array[duplicatePosition2] = array[duplicatePosition1];
TreeNode* treeData = nextTreeData(numbers);
int* array = malloc(len*sizeof(int));
array[0] = treeData->data;
for (int i = 1; i < len; i++)
{
treeData = nextTreeData(NULL);
array[i] = treeData->data;
}
return array; return array;
} }
@ -72,5 +64,13 @@ unsigned int* createNumbers(unsigned int len)
// Returns only the only number in numbers which is present twice. Returns zero on errors. // Returns only the only number in numbers which is present twice. Returns zero on errors.
unsigned int getDuplicate(const unsigned int numbers[], unsigned int len) unsigned int getDuplicate(const unsigned int numbers[], unsigned int len)
{ {
qsort(numbers, len, sizeof(int), compareFct);
for(int i = 0; i < len-1; i++){
if(numbers[i] == numbers[i+1]){
return numbers[i];
}
}
return 0;
} }