Skip to content
Snippets Groups Projects
Commit acfbaaba authored by florian.burgener's avatar florian.burgener
Browse files

Start implementing the Directory

parent 15f8c174
Branches
No related tags found
No related merge requests found
_main.c 0 → 100644
#include <assert.h>
// Warning : stdbool
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include "bptree.h"
#include "sorted_array.h"
int main() {
BPTreeNode *root = bptree_init(2);
int keys_length = 40;
uint64_t keys[] = {8, 12, 11, 47, 22, 95, 86, 40, 33, 78, 28, 5, 75, 88, 21, 56, 82, 51, 93, 66, 48, 70, 57, 65, 35, 4, 60, 41, 49, 55, 68, 72, 23, 31, 30, 42, 18, 87, 24, 58};
array_print(keys_length, keys);
for (int i = 0; i < keys_length; i++) {
bptree_insert(root, keys[i], keys[i] * 1000);
}
bptree_print(root, 0);
for (int i = 0; i < keys_length; i++) {
uint64_t data;
bool found = bptree_search(root, keys[i], &data);
assert(found == true);
assert(data == keys[i] * 1000);
}
bptree_destroy(&root);
return EXIT_SUCCESS;
}
#include "Directory.h"
#include <stdio.h>
#include <stdlib.h>
#include "DirectoryRecord.h"
Directory *Directory_init() {
Directory *directory = (Directory *)malloc(sizeof(Directory));
directory->records_length = 0;
// WARNING
directory->records = (DirectoryRecord **)malloc(sizeof(Directory *) * 1000);
return directory;
}
void Directory_destroy(Directory **directory) {
for (int i = 0; i < (*directory)->records_length; i++) {
DirectoryRecord_destroy(&(*directory)->records[i]);
}
free((*directory)->records);
free(*directory);
*directory = NULL;
}
void Directory_print(Directory *directory) {
printf("========================\n");
for (int i = 0; i < directory->records_length; i++) {
DirectoryRecord_print(directory->records[i]);
if (i < directory->records_length - 1) {
printf("------------------------\n");
}
}
printf("========================\n");
}
void Directory_insert(Directory *directory, DirectoryRecord *record) {
directory->records[directory->records_length] = record;
directory->records_length += 1;
}
#ifndef DIRECTORY_H
#define DIRECTORY_H
#include "DirectoryRecord.h"
typedef struct Directory {
int records_length;
DirectoryRecord **records;
} Directory;
Directory *Directory_init();
void Directory_destroy(Directory **directory);
void Directory_print(Directory *directory);
void Directory_insert(Directory *directory, DirectoryRecord *record);
#endif
File added
#include "DirectoryRecord.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
DirectoryRecord *DirectoryRecord_init(char phone_number[11], char name[21], char surname[21], int birth_date_year, int birth_date_month, int birth_date_day) {
DirectoryRecord *record = (DirectoryRecord *)malloc(sizeof(DirectoryRecord));
strcpy(record->phone_number, phone_number);
strcpy(record->name, name);
strcpy(record->surname, surname);
record->birth_date_year = birth_date_year;
record->birth_date_month = birth_date_month;
record->birth_date_day = birth_date_day;
return record;
}
void DirectoryRecord_destroy(DirectoryRecord **record) {
free(*record);
*record = NULL;
}
void DirectoryRecord_print(DirectoryRecord *record) {
printf("Phone Number: %s\n", record->phone_number);
printf("Name: %s\n", record->name);
printf("Surname: %s\n", record->surname);
printf("Birth Date: %d-%.2d-%.2d\n", record->birth_date_year, record->birth_date_month, record->birth_date_day);
}
#ifndef DIRECTORY_RECORD_H
#define DIRECTORY_RECORD_H
typedef struct DirectoryRecord {
char phone_number[11];
char name[21];
char surname[21];
int birth_date_year;
int birth_date_month;
int birth_date_day;
} DirectoryRecord;
DirectoryRecord *DirectoryRecord_init(char phone_number[11], char name[21], char surname[21], int birth_date_year, int birth_date_month, int birth_date_day);
void DirectoryRecord_destroy(DirectoryRecord **record);
void DirectoryRecord_print(DirectoryRecord *record);
#endif
File added
......@@ -21,8 +21,6 @@ void bptree_destroy(BPTreeNode **root);
void bptree_print(BPTreeNode *root, int depth);
bool bptree_search(BPTreeNode *root, uint64_t key, uint64_t *data);
// ...
// Insertion
void bptree_insert(BPTreeNode *root, uint64_t key, uint64_t data);
......
......@@ -4,29 +4,20 @@
#include <stdio.h>
#include <stdlib.h>
#include "Directory.h"
#include "DirectoryRecord.h"
#include "bptree.h"
#include "sorted_array.h"
int main() {
BPTreeNode *root = bptree_init(2);
int keys_length = 40;
uint64_t keys[] = {8, 12, 11, 47, 22, 95, 86, 40, 33, 78, 28, 5, 75, 88, 21, 56, 82, 51, 93, 66, 48, 70, 57, 65, 35, 4, 60, 41, 49, 55, 68, 72, 23, 31, 30, 42, 18, 87, 24, 58};
array_print(keys_length, keys);
BPTreeNode *index = bptree_init(2);
for (int i = 0; i < keys_length; i++) {
bptree_insert(root, keys[i], keys[i] * 1000);
}
Directory *directory = Directory_init();
Directory_insert(directory, DirectoryRecord_init("0794592180", "Florian", "Burgener", 2000, 10, 03));
Directory_insert(directory, DirectoryRecord_init("0799494969", "Daisy", "Luna", 1995, 05, 31));
Directory_print(directory);
bptree_print(root, 0);
for (int i = 0; i < keys_length; i++) {
uint64_t data;
bool found = bptree_search(root, keys[i], &data);
assert(found == true);
assert(data == keys[i] * 1000);
}
bptree_destroy(&root);
Directory_destroy(&directory);
bptree_destroy(&index);
return EXIT_SUCCESS;
}
No preview for this file type
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment