From 0a75187497b6a6accb3996af28d641e8d2cd6a62 Mon Sep 17 00:00:00 2001 From: Maximilian Ott Date: Tue, 16 Dec 2025 11:42:05 +0100 Subject: [PATCH] binetree changes --- bintree.c | 54 +++++++++++++--------------------------------------- bintree.o | Bin 0 -> 2848 bytes highscore.o | Bin 0 -> 4328 bytes main.o | Bin 0 -> 2464 bytes numbers.o | Bin 0 -> 2016 bytes stack.o | Bin 0 -> 1768 bytes timer.o | Bin 0 -> 1408 bytes 7 files changed, 13 insertions(+), 41 deletions(-) create mode 100644 bintree.o create mode 100644 highscore.o create mode 100644 main.o create mode 100644 numbers.o create mode 100644 stack.o create mode 100644 timer.o diff --git a/bintree.c b/bintree.c index 02be37d..c62d2d7 100644 --- a/bintree.c +++ b/bintree.c @@ -1,24 +1,20 @@ #include #include #include - #include "stack.h" #include "bintree.h" static StackNode *push_left(TreeNode *node, StackNode *stack); -/* Vergleichsfunktion */ -int compareFct(const void *argument1, const void *argument2) +int compareFct(const void *a, const void *b) { - int x = *((int *)argument1); - int y = *((int *)argument2); - + int x = *((int *)a); + int y = *((int *)b); if (x < y) return -1; if (x > y) return 1; return 0; } -/* Erzeugt einen neuen Baumknoten mit Datenkopie */ static TreeNode *create_node(const void *data, size_t data_size) { TreeNode *node = malloc(sizeof(TreeNode)); @@ -27,7 +23,6 @@ static TreeNode *create_node(const void *data, size_t data_size) perror("Speicher wurde NICHT reserviert!"); return NULL; } - node->data = malloc(data_size); if (!node->data) { @@ -35,67 +30,48 @@ static TreeNode *create_node(const void *data, size_t data_size) free(node); return NULL; } - memcpy(node->data, data, data_size); node->left = NULL; node->right = NULL; - return node; } -/* Fügt Daten in den Binärbaum ein */ TreeNode *addToTree(TreeNode *root, const void *data, size_t dataSize, CompareFctType compareFct, int *isDuplicate) { if (root == NULL) { - if (isDuplicate) - *isDuplicate = 0; + if (isDuplicate) *isDuplicate = 0; return create_node(data, dataSize); } - int cmp = compareFct(data, root->data); - if (cmp < 0) - { root->left = addToTree(root->left, data, dataSize, compareFct, isDuplicate); - } else if (cmp > 0) - { root->right = addToTree(root->right, data, dataSize, compareFct, isDuplicate); - } - else - { - if (isDuplicate) - *isDuplicate = 1; - } - + else if (isDuplicate) + *isDuplicate = 1; return root; } -/* Inorder-Iterator über den Baum */ -void *nextTreeData(TreeNode *root) +// nextTreeData benutzt jetzt einen extern verwalteten Stack +void *nextTreeData(TreeNode *root, StackNode **stack) { - static StackNode *stack = NULL; - - /* Neuer Start → linken Pfad auf Stack legen */ if (root != NULL) - stack = push_left(root, stack); + *stack = push_left(root, *stack); - if (stack == NULL) + if (*stack == NULL) return NULL; - /* TOP lesen, dann POP */ - TreeNode *node = (TreeNode *)top(stack); - stack = pop(stack); + TreeNode *node = (TreeNode *)top(*stack); + *stack = pop(*stack); if (node->right != NULL) - stack = push_left(node->right, stack); + *stack = push_left(node->right, *stack); return node->data; } -/* Hilfsfunktion: linken Pfad auf Stack legen */ static StackNode *push_left(TreeNode *node, StackNode *stack) { while (node != NULL) @@ -106,23 +82,19 @@ static StackNode *push_left(TreeNode *node, StackNode *stack) return stack; } -/* Gibt gesamten Baum frei */ void clearTree(TreeNode *root) { if (root == NULL) return; - clearTree(root->left); clearTree(root->right); free(root->data); free(root); } -/* Liefert Anzahl der Knoten */ unsigned int treeSize(const TreeNode *root) { if (root == NULL) return 0; - return 1 + treeSize(root->left) + treeSize(root->right); } \ No newline at end of file diff --git a/bintree.o b/bintree.o new file mode 100644 index 0000000000000000000000000000000000000000..d74077cf7a28c9c0e155243c42e50ec38c716980 GIT binary patch literal 2848 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 literal 0 HcmV?d00001 diff --git a/numbers.o b/numbers.o new file mode 100644 index 0000000000000000000000000000000000000000..14309dc0a36ece63e7942232a3cd4aac8535a774 GIT binary patch literal 2016 zcmb7FPly{;7=KA)o7Q$`EnBLf>?juX5ZM;QN~yZosdLz9(G8T!@*I=5NoX<&GZVWm z1cb5c4#UC#e7yokMc5f7^oqZhkMp%HpWVZ{tYSYg3MR^#uRdE;i&_TUHK`~JS) z``-87o4Nki@BbWNEU}Ma0H?s|BnA}>dI-EsfqT$4O$0qjb3m~TOh!z2M4UTf!HM+9 zp4BeS?%J{TzQiFsnyc<->;Vd<*t;ZR;yiCVR@p2{2j_e7Vw^=8|2!^4+H#o~4)x`0 z)w+>)c*DF>HVd53ock{bB`x>)rgTo-#~8UjMSU`~2aEBB zc+zC|GggXqlBd8Af}^7tV=SqVo6(}=Uqc<3!|G^y9g_45U?Q4BOu4jd8vK7Lr+dHZ zZhy*aZn@2^q~e|cg6^Yg5~uZ*XAHn!W4+MP*0xCo2eGWLZFz0|>)(=5$kTed+w3vr z>KzC#-vyyf_-(CAaBZza;^dmw4zZ;0wT_?Na)ZQk-z)ALNC<;){dD`}&wu{mev|NW zH*~+*)mIufzNCAguN)zunHB9;TvXR>-a<{s;r1z8>-pJ^_oMq=!fSNAAH0d>;KRXS z5JO`%!uE3OQR=!su^eesNSIG6M(6<3J#8EDZQcELYObYBvap|Cb5r*kJp?v==4l%t z0+g<=ZJg1%ihCI4w6z^9JP0PKw8+0C{dA}Sy)xurM0jVeHLpzK=F0O@b*$kv`e^wk zQ{Fp-B)8ee@jVW0&+!p}JU)pQEWy>*qAgQD`m)FL=CCJsErFWDlKP7KLI{YBWP5%J zy~u9*xs5Za50tA%_e4BxC&<7PfN4JwO7I13F>*z~yRju*C{={@s5)&f z8l{R_ZP>P2#d8(5BTQR8rP`uwK7EMAd9T++IbRZ%dbwtrj!;clj%o>8SZ|kw<)~ML zRS+~IXBJyuRh)8B*y^-p8SkjI0_M%MJ~4{|@e#^W@8jn<6uS`l*`>%Qt=)uc(sT13 z@d=rlSbU8o7RD3fhYzGzF^A6UVemqD83qHnK4a5k<4ehxj^O!+M0q%V_VM3zX$AvX z$6fO($m_^FSO(CJmW}`~_Gk$aP52BcEX)|3{Dq zA?Z7ZCT1=}5?%q4@Tfk*qndG(Gf&C*V=_+PHj2LpiKX_dQbL3_d~6Iu+;@7|3OOZB zL6RN!oq9MFX0MLeRL5}qi4mLb{&3tFv1vcU@#jZu7X4=|aX#-rw}jz{R~pr~gk|F& z#BB$c&Z;v$U&qhQnPj~y+Q(n*!DV_EGLbo1Mg>^IV{A^pUp{X|KB&3FcS80sC*IMHB` z-NbF!KMfuM;0s^`hX=_GH+xOHuxr}KXp76XJWB3po`_MA07d}I4UfL?+L;-goNvzyx%=%i?*|6> zyYuJqxqEZ?VEmnguoG8K_1KS>#GKqYYZu!sT&f=J>MRAf9L9yWi03N;b=x@wdJ5~rxZO?zVe+|MV9G4@utMD^@%S^$5@~E zgwzk*yG{e8&_HN(IPe%XC*VH@HGbjbAi|I6(s<~>;N>xVPOfkst_77OPk8ps%OGz< z@`P{Cyr;-(NuKcjD{mbf!6E!a@F)-;Sa<@6Z~x#3aENH`GkS5}OCZOe13A79D*!NGhJuF?)$GEF7zaB&kFm{|Zh53tMYa*;po%ixd3;Py|29 literal 0 HcmV?d00001 diff --git a/timer.o b/timer.o new file mode 100644 index 0000000000000000000000000000000000000000..77c43a1a9eec91b3233b26624af9b3dc6e16a467 GIT binary patch literal 1408 zcma)6O=uHA6rQAwE!cFnU{TT196YoKB??MCh>dMvKnq2q^k5y*n3!PGhGdJygA`MQ z5GtPa;zjW4(NhgA7`=qtf)@o5Qh%V-L#s&R_jcbVYf8Zf@9%p*^JaEtE5Cp2b_wC> z5D?%_@Jla501P?`9wL7qs#6iD%sDmo(Nho~pdd(VGrnlrw(Up4Q<0YMSPeF)AIxk=j6;s5%+w&T(dyy*nBz@jhT93?p|u{w$@k1n?V>sE*NES z$Jwt>2>vwxd_}F}Nu9_>({a0?eZLv*m*jpU*sOcLgF-kVE8`605wKl`)9^|Qr$q@j zFbAF2ByPN}tHPI6x@>CYELGJ>Os^&6;4)c);wt|=$TF_1&7P(b!Ge7=NHe`18RE%i8WQIs=|9! z`g&27esw8NRe8#)5U$H1e;y@2<%4iNA!kYn01p8qkA7yBHh9{e=ki z8jrkVe&>HcdE?+D=kYpw^1dMl_oDv;G-#z_>wyyMSI`uH3f%!+V10w*=ULPJMEqnQ zYwMpP#6SQ(#H4HmsPedm4B4Uhyf(Z0zKus;ax3ghAD%xKnR6-lMzS+eIdY{q8i NV|VqPxM?DU+P|WUz77BY literal 0 HcmV?d00001