From 1b8ce2a594a2e71a425dff58f1b432921d3375f7 Mon Sep 17 00:00:00 2001 From: jonas <jonas.stirnemann@etu.hesge.ch> Date: Wed, 17 Nov 2021 11:38:20 +0100 Subject: [PATCH] Added basic stack --- jmaths/bin/main | Bin 16464 -> 16488 bytes jmaths/src/jmath.c | 19 ++++ jmaths/src/main.c | 13 +-- queen_backtrack/kreate.py | 196 ++++++++++++++++++++++++++++++++++++++ stack/Makefile | 36 +++++++ stack/bin/main | Bin 0 -> 21544 bytes stack/include/stack.h | 39 ++++++++ stack/kreate.py | 196 ++++++++++++++++++++++++++++++++++++++ stack/src/main.c | 14 +++ stack/src/stack.c | 48 ++++++++++ 10 files changed, 555 insertions(+), 6 deletions(-) create mode 100644 queen_backtrack/kreate.py create mode 100644 stack/Makefile create mode 100755 stack/bin/main create mode 100644 stack/include/stack.h create mode 100644 stack/kreate.py create mode 100644 stack/src/main.c create mode 100644 stack/src/stack.c diff --git a/jmaths/bin/main b/jmaths/bin/main index b985017ec3177668cc94ef1ecbe6dfa516c6d705..3d1a5db6978452da79edfad815e7bd8230d71315 100755 GIT binary patch delta 1246 zcmcc6!1$tpae@Zpiiw){IZN3Yz@T)pAfrBK1v8k#P_fyQ(VdaA1j1t|nLLx}zQ{^v zi{{n(Q`-DLIEa@Adj>w>+R3xIhdGOvKaGun!K0V=Ju8T^y|tND(2J3?v-XEaXX%Ft zv6EeePI0dK`~UwZegWP`lO=@ba@+7QFzf&s{^Hi;1H!sGB5?kqKmY%G^oHK>=yko| z(Rs|H*Omt^H|@{=|1T0JONyu%Kjda$c+Kw7%X*KSfuY;?j7R68&T}5Uwl}$923!64 z|G(Mw3}bWc8P2*rFS!3qekdvt)5ycX@QFX};3s}T*B77o1$;pSYcW_f@<f^ke;tU( zJK)i4+Xga<k%58X#hu^(|G(J&`~QEBPS*z>-Jv%;x<QV+=Fxfl#Z8cVJ6%7#nEo4N z0TVCJ<OWf3?jX44s>uqXqK2LzKG?%iAj3?t8#Wzgm?+pV#_q}Wq7pp+xEL6AfF1JV z*JMRe5zVh40kB~=e*ORdV)HMU%RsI={v!M@nE&C$tjP~VB^d=khUjbr=>Z#33sMg9 zKzHZ|NC<=Fz~&`_%(IznCnmwD4Awkza-o=ndInrG8-`{pkQ`X^tH~S0B%BZa{Qv*t z;WRyd`4*5U1HZfr1H)&2xnGXqKE1ZxY77jHVV<4W978=jzdD9EcK!+V=+&)JV_*pO z(fsSt{D$Mj{muWx9&v0^Fk!3*B|u&V28Ivs{{LUWz`zjj{{R0A3=9kj@BjaQ!N9<< z;r;*r6Brm6W`6kppMjBq;pT_`{}mV+7{osQ|L?%az@Yi@|NjI=1_qH&|Nl2IGBAXE z`u~3cBLl;xPyhd)U}Ru8@b&-y7mN%H2H*bwH(&z0mq7$VF)&sIO<t`i$|y1UprSaV z!{nQa>WmeW8I{B(3*P<z9{^PaqGT8t7<w2O7$#0ORFY@hI5|*BUh&-f|Nn(SlCFFL zZA{L*Y+gL<91IK$AhmB87#I#tE>x0c<zZxC=$SlGNt#uMk%3{&<c&(otRajH438$? zRFY;bVPs&qF!`sFGv^*g28JJ>|Nm#*9H=bKHMv9AgE3?CMcw_(j3tvN8t!LIm>g)- z&zLd!p;0+w<m5=>c*YNtcN*(6x=em)tSu_UAi&@z1ab@m1K3Rr3=Eu;1x>^~MVS~F zK(ddZ!vCRRAO#g~fr`gLG&9IU#ZL-C1RNj~gYx7;6LCo!CI$vUCP@YXm@rh<WAZ{1 zamFN&8ph(y7fqy@SbUs)gEqf5d%(E)g2e-7#@5LjZS*-a#333oCcm_4XDpdqXsa){ nLJ=Ycqc3dUX#1a$@x<hf_U4=nrVz=#$sg^_8T%${I;aBxv5~0! delta 1320 zcmaFSz<8m7ae@Zpgo&E>IYZeQz#w$8AfrBK05h1w5U|;k(VdYq2f|~>nLLx}zQ~dt ziyvMvu##!=S-C&T_M1K5?uwYrJ<M6W{BCRv3?99_=UG9N?eWd5f?kZ1lY|a%?*04! z|0jL{-mjCjh39hn^Dr>%02%q>?c~eCx;pA`{?<SL|9kX?-tg#kz2MP#%%j&<9xk`? z&;S1~N+#=wsMLSqW?*>D?$OKok(+^`+xLt|=b_GX9=*12xM2qS{`vpE+4T%#bL|<< zx;-!CK;~+@KJe&teUQfg{=g>>el6DrAQw&HVPN>gA9wH*zo6@jPy7PDAcD0GEE;(t z&4a%VMC2Xt=(U{*GM$lufx+>````cnzc}^#|9_By9^IigJi0*+zUI++{KXrPU7fBU zUaSJiW3^OavVf>Wb}G!g7rh{rFjKmHKR~=51Cj>^Q!dCl50Iix*9U0Ut%6yn0g}gR z-8}Bef}-Lnf*|ui?tj4zQi@?82S^@l-|Juh|Gzl)3+6qL*N(pk{|n}Sc(E2Ffz={q zuthpYxEL6AfGwH;QVI&1?og<wz;a+qN<fzQPYx85kTC-(!)oFhE|AmftKlX}f|R0| z=nIkqoA~$V|Nr20<<af?BgI3TM^%G?fuV%;#g(7`|DQaZHsLeB+%Ly)pI+P5Y77jH zVV<4W978=jzdD9EcK!+V=+&L0#=sElqxsjP`3=X5|3Ci!_c-{MxkTP@vxfK$j>!e= z3Y!#67*j#Hfro*C;lsQC{}(VYFa*5+|NjI714F|5|NkE_FfeR*|Nnmn0|Ud%5C8xF zU|?Xl`QiV62}TA6v5)`%TQD*(Fn;>~KZ22g!SU1o{}qf34D&zz|G$8dfnmYd|Njp# zGB5~y`~RO~@<K&*Nrm_S|LcRi=E5!jqEr|d7)%%#7(6CFR8*I2c=!K5SQsS5z`!5^ z@+<=bL&ao8C2_`?lP#6x8Fx;ORFY@BHhHF!H0v7%28M-`cPdG<@-Q+m9GrYpNtxAz zk%8g+WJYCa)(}Pph8vR=m7O`~fTHfp|NpF;3zfyWCKs^lOzzP2VD#90QFlKxqtE1t zhWi;ECI=ezGkQ#ZXjIPVHaXHbp7FxuoyPi%hLc|!Yr6_CNHGXFK%E7p1eh2Ygct-E z&I>~X{xd;nQK)z!R6GtM%pf(n&_tY3Zt_JFaYpmW3r)mXotYRI6ee$E5@w7AiL&M~ zF)%1i-pC}fnbDM)X)~w!ea6WLm{>Qzuz0}Cm^%5SjXtM`IK(uM$&9w`j5(7#ZS@5g pC_=<w^oGqRZT~YeZkT-1-kkFVD0mqd7&<3&I+!ySPIh!q2LRbi?L+_o diff --git a/jmaths/src/jmath.c b/jmaths/src/jmath.c index 45560d8..1894d71 100644 --- a/jmaths/src/jmath.c +++ b/jmaths/src/jmath.c @@ -44,6 +44,25 @@ uint64_t GCD(uint64_t a, uint64_t b) uint64_t LCM(uint64_t a, uint64_t b) { return( a / (GCD(a, b)) * b); +} + +/** + * @brief Get the Lowest Common Multiplier Recursivly + * + * @param a + * @param b + * @return int64_t + */ +uint64_t LCMR(uint64_t ma, uint64_t mb, uint64_t a, uint64_t b) +{ + // STOP + if(ma == mb){return ma;} + else if(ma > mb){ LCMR(); } + + + + + } diff --git a/jmaths/src/main.c b/jmaths/src/main.c index 90a0ef6..3b9b414 100644 --- a/jmaths/src/main.c +++ b/jmaths/src/main.c @@ -57,12 +57,13 @@ int main() printf("COMPUTED FACTORIAL IN %lfs\n", timeT); printf("FACT(%ld) = %ld \n", a, r); - t = clock(); - r = fibo(b); - t = clock() - t; - timeT = ((double)t) / CLOCKS_PER_SEC; - printf("COMPUTED FIBO IN %lfs\n", timeT); - printf("FACT(%ld) = %ld \n", a, r); + // // FIBO + // t = clock(); + // r = fibo(b); + // t = clock() - t; + // timeT = ((double)t) / CLOCKS_PER_SEC; + // printf("COMPUTED FIBO IN %lfs\n", timeT); + // printf("FACT(%ld) = %ld \n", a, r); return 0; diff --git a/queen_backtrack/kreate.py b/queen_backtrack/kreate.py new file mode 100644 index 0000000..40079e0 --- /dev/null +++ b/queen_backtrack/kreate.py @@ -0,0 +1,196 @@ +# * PROJ +# * Author: Jonas S. +# * Date: 11/07/21 +# ! OBJECTIVE +# ? CREATE A BASIC RUNNING PROJECT +# ? CREATE SIMPLE C OR HEADER FILE WITH HEADERS +# ? CREATE MAKEFILE +# ! NEED COLORAMA AND OS + + + + +import colorama +from colorama import Fore, Back + + +#HARD CODED STUFF +NAME = "Jonas S." +colorama.init() + +# ! FILE CREATION +def createFile(fileName, content): + with open(f"{fileName}", 'w', encoding = 'utf-8') as f: + f.write(content) + +def createHeaderFile(fileName): + from datetime import datetime + import os + from os import mkdir + + now = datetime.now() # current date and time + + content = ( + "/*\n" + f"\t* HEADER {fileName.upper()}\n" + f"\t* Author : {NAME}\n" + f"\t* Date : {now.strftime('%d/%m/%Y')}\n" + "\t! DESCRIPTION\n" + "*/\n\n" + f"#ifndef _{fileName.upper()}_H_\n" + f"#define _{fileName.upper()}_H_\n\n" + "// DEFINES\n\n" + "// PROTOTYPE FUNCTIONS\n\n" + "#endif" + ) + + if not os.path.exists('include'): + mkdir('include') + createFile(f"include/{fileName}.h", content) + +def createCodeFile(fileName): + from datetime import datetime + from datetime import datetime + import os + from os import mkdir + + now = datetime.now() # current date and time + + content = ( + "/*\n" + f"\t* CODE {fileName.upper()}\n" + f"\t* Author : {NAME}\n" + f"\t* Date : {now.strftime('%d/%m/%Y')}\n" + "\t! DESCRIPTION\n" + "*/\n\n" + ) + + # add basic printf if main + if fileName == "main": + content += "#include <stdio.h>\n\nint main()\n{\n\tprintf(\"ISSOU\\n\");\n\treturn 0;\n}" + + if not os.path.exists('src'): + mkdir('src') + createFile(f"src/{fileName}.c", content) + +def createMakefile(): + content = ( + "CC := gcc\n" + "CFLAGS := -Wall -Wextra -g -fsanitize=address -fsanitize=leak\n" + "\n" + "BIN := bin\n" + "SRC := src\n" + "INCLUDE := include\n" + "LIBRARIES := -lm\n" + "EXECUTABLE1 := main\n" + "\n" + "# ADD ALL THE SOURCES FOR EXECUTABLE1\n" + "SOURCES1 += $(SRC)/jrandom\n" + "\n" + ".PHONY: all run clean # Specify these are not files but internal terms\n" + "\n" + "all: $(BIN)/$(EXECUTABLE1)\n" + "\n" + "run: clean all\n" + " clear\n" + " @echo "########## EXECUTE FIRST PROGRAM ##########"\n" + " ./$(BIN)/$(EXECUTABLE1)\n" + "\n" + "# # $^ -> dep\n" + "# # $@ -> target\n" + "# # $< -> premiere dep\n" + "# # Compiles directly the c files\n" + "# # Not optimal but succint and simple\n" + "\n" + "# COMPILE FIRST EXECUTABLE\n" + "$(BIN)/$(EXECUTABLE1): $(SRC)/$(EXECUTABLE1).c $(SOURCES)\n" + " @echo "########## COMPILING FIRST EXECUTABLE ##########"\n" + " $(CC) $(CFLAGS) -I $(INCLUDE) $^ -o $@ $(LIBRARIES)\n" + "\n" + "clean:\n" + " @echo "########## CLEANING ##########"\n" + " -rm $(BIN)/*\n" + "\n" + ) + createFile("Makefile", content) + +def createDirStructure(): + import os + from os import mkdir + + if not os.path.exists('bin'): + mkdir('bin') + if not os.path.exists('build'): + mkdir('build') + if not os.path.exists('include'): + mkdir('include') + if not os.path.exists('src'): + mkdir('src') + +# ! MENU CREATION +def createCompleteProject(): + # Base structure (SRC, BUILD, INCLUDE, BIN) + createDirStructure() + print(f"{Fore.GREEN}+ BASIC STRUCTURE CREATED{Fore.RESET}") + # Makefile + createMakefile() + print(f"{Fore.GREEN}+ MAKEFILE CREATED{Fore.RESET}") + # Main + createCodeFile("main") + print(f"{Fore.GREEN}+ MAIN.C FILE CREATE{Fore.RESET}") + +def createCodeHeader(name): + # Code + createCodeFile(name) + print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}") + # Header + createHeaderFile(name) + print(f"{Fore.GREEN}+ HEADER FILE CREATED{Fore.RESET}") + + + +# ! MENU +def menu(): + choice = input( + "1 - COMPLETE PROJECT \n" + "2 - CODE + HEADER \n" + "3 - CODE ONLY \n" + "4 - HEADER ONLY \n" + "5 - MAKEFILE ONLY \n" + "\n" + + ) + + # PROJECT + if choice == '1': + print(f"{Fore.BLUE}FULL PROJECT IS BEING CREATED.{Fore.RESET}") + createCompleteProject() + + # CODE + HEADER + elif choice == '2': + print(f"{Fore.BLUE}A CODE AND HEADER FILE ARE BEING CREATED.{Fore.RESET}") + createCodeHeader(input("WHAT FILE NAME DO YOU WANT : ")) + + # CODE + elif choice == '3': + print(f"{Fore.BLUE}A CODE FILE IS BEING CREATED.{Fore.RESET}") + createCodeFile(input("WHAT FILE NAME DO YOU WANT : ")) + print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}") + + # HEADER + elif choice == '4': + print(f"{Fore.BLUE}A HEADER FILE IS BEING CREATED.{Fore.RESET}") + createHeaderFile(input("WHAT FILE NAME DO YOU WANT : ")) + print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}") + + # MAKEFILE + elif choice == '5': + print(f"{Fore.BLUE}A HEADER FILE IS BEING CREATED.") + createMakefile() + print(f"{Fore.GREEN}+ MAKEFILE CREATED{Fore.RESET}") + +if __name__ == "__main__": + menu() + + + diff --git a/stack/Makefile b/stack/Makefile new file mode 100644 index 0000000..89e596e --- /dev/null +++ b/stack/Makefile @@ -0,0 +1,36 @@ +CC := gcc +CFLAGS := -Wall -Wextra -g -fsanitize=address -fsanitize=leak + +BIN := bin +SRC := src +INCLUDE := include +LIBRARIES := -lm +EXECUTABLE1 := main + +# ADD ALL THE SOURCES FOR EXECUTABLE1 +SOURCES1 += $(SRC)/jrandom + +.PHONY: all run clean # Specify these are not files but internal terms + +all: $(BIN)/$(EXECUTABLE1) + +run: clean all + clear + @echo "RUN MAIN" + ./$(BIN)/$(EXECUTABLE1) + +# # $^ -> dep +# # $@ -> target +# # $< -> premiere dep +# # Compiles directly the c files +# # Not optimal but succint and simple + +# COMPILE FIRST EXECUTABLE +$(BIN)/$(EXECUTABLE1): $(SRC)/$(EXECUTABLE1).c $(SOURCES) + @echo + $(CC) $(CFLAGS) -I $(INCLUDE) $^ -o $@ $(LIBRARIES) + +clean: + @echo + -rm $(BIN)/* + diff --git a/stack/bin/main b/stack/bin/main new file mode 100755 index 0000000000000000000000000000000000000000..64ac03de35bd59a9847fc639b51e77501e760bf0 GIT binary patch literal 21544 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 Ba1sCj literal 0 HcmV?d00001 diff --git a/stack/include/stack.h b/stack/include/stack.h new file mode 100644 index 0000000..d27e992 --- /dev/null +++ b/stack/include/stack.h @@ -0,0 +1,39 @@ +/* + * HEADER STACK + * Author : Jonas S. + * Date : 17/11/2021 + ! STACK IMPLEMENTATION +*/ + +#include <stdio.h> +#include <stdbool.h> +#include <stdint.h> +#include <stdlib.h> + + + +#ifndef _JSTACK_H_ +#define _JSTACK_H_ + +// DEFINES +#define MAX_CAPACITY 500 + +typedef struct +{ + int64_t top; + int32_t *data; +}stack_t; + +// PROTOTYPE FUNCTIONS +int32_t* create_stack(); +void stack_push(stack_t* st, int32_t val); +int32_t stack_pop(stack_t* st); +int32_t stack_peek(stack_t st); +bool stack_is_full(stack_t st); +bool stack_is_empty(stack_t st); +void stack_destroy(stack_t* st); + + + + +#endif \ No newline at end of file diff --git a/stack/kreate.py b/stack/kreate.py new file mode 100644 index 0000000..40079e0 --- /dev/null +++ b/stack/kreate.py @@ -0,0 +1,196 @@ +# * PROJ +# * Author: Jonas S. +# * Date: 11/07/21 +# ! OBJECTIVE +# ? CREATE A BASIC RUNNING PROJECT +# ? CREATE SIMPLE C OR HEADER FILE WITH HEADERS +# ? CREATE MAKEFILE +# ! NEED COLORAMA AND OS + + + + +import colorama +from colorama import Fore, Back + + +#HARD CODED STUFF +NAME = "Jonas S." +colorama.init() + +# ! FILE CREATION +def createFile(fileName, content): + with open(f"{fileName}", 'w', encoding = 'utf-8') as f: + f.write(content) + +def createHeaderFile(fileName): + from datetime import datetime + import os + from os import mkdir + + now = datetime.now() # current date and time + + content = ( + "/*\n" + f"\t* HEADER {fileName.upper()}\n" + f"\t* Author : {NAME}\n" + f"\t* Date : {now.strftime('%d/%m/%Y')}\n" + "\t! DESCRIPTION\n" + "*/\n\n" + f"#ifndef _{fileName.upper()}_H_\n" + f"#define _{fileName.upper()}_H_\n\n" + "// DEFINES\n\n" + "// PROTOTYPE FUNCTIONS\n\n" + "#endif" + ) + + if not os.path.exists('include'): + mkdir('include') + createFile(f"include/{fileName}.h", content) + +def createCodeFile(fileName): + from datetime import datetime + from datetime import datetime + import os + from os import mkdir + + now = datetime.now() # current date and time + + content = ( + "/*\n" + f"\t* CODE {fileName.upper()}\n" + f"\t* Author : {NAME}\n" + f"\t* Date : {now.strftime('%d/%m/%Y')}\n" + "\t! DESCRIPTION\n" + "*/\n\n" + ) + + # add basic printf if main + if fileName == "main": + content += "#include <stdio.h>\n\nint main()\n{\n\tprintf(\"ISSOU\\n\");\n\treturn 0;\n}" + + if not os.path.exists('src'): + mkdir('src') + createFile(f"src/{fileName}.c", content) + +def createMakefile(): + content = ( + "CC := gcc\n" + "CFLAGS := -Wall -Wextra -g -fsanitize=address -fsanitize=leak\n" + "\n" + "BIN := bin\n" + "SRC := src\n" + "INCLUDE := include\n" + "LIBRARIES := -lm\n" + "EXECUTABLE1 := main\n" + "\n" + "# ADD ALL THE SOURCES FOR EXECUTABLE1\n" + "SOURCES1 += $(SRC)/jrandom\n" + "\n" + ".PHONY: all run clean # Specify these are not files but internal terms\n" + "\n" + "all: $(BIN)/$(EXECUTABLE1)\n" + "\n" + "run: clean all\n" + " clear\n" + " @echo "########## EXECUTE FIRST PROGRAM ##########"\n" + " ./$(BIN)/$(EXECUTABLE1)\n" + "\n" + "# # $^ -> dep\n" + "# # $@ -> target\n" + "# # $< -> premiere dep\n" + "# # Compiles directly the c files\n" + "# # Not optimal but succint and simple\n" + "\n" + "# COMPILE FIRST EXECUTABLE\n" + "$(BIN)/$(EXECUTABLE1): $(SRC)/$(EXECUTABLE1).c $(SOURCES)\n" + " @echo "########## COMPILING FIRST EXECUTABLE ##########"\n" + " $(CC) $(CFLAGS) -I $(INCLUDE) $^ -o $@ $(LIBRARIES)\n" + "\n" + "clean:\n" + " @echo "########## CLEANING ##########"\n" + " -rm $(BIN)/*\n" + "\n" + ) + createFile("Makefile", content) + +def createDirStructure(): + import os + from os import mkdir + + if not os.path.exists('bin'): + mkdir('bin') + if not os.path.exists('build'): + mkdir('build') + if not os.path.exists('include'): + mkdir('include') + if not os.path.exists('src'): + mkdir('src') + +# ! MENU CREATION +def createCompleteProject(): + # Base structure (SRC, BUILD, INCLUDE, BIN) + createDirStructure() + print(f"{Fore.GREEN}+ BASIC STRUCTURE CREATED{Fore.RESET}") + # Makefile + createMakefile() + print(f"{Fore.GREEN}+ MAKEFILE CREATED{Fore.RESET}") + # Main + createCodeFile("main") + print(f"{Fore.GREEN}+ MAIN.C FILE CREATE{Fore.RESET}") + +def createCodeHeader(name): + # Code + createCodeFile(name) + print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}") + # Header + createHeaderFile(name) + print(f"{Fore.GREEN}+ HEADER FILE CREATED{Fore.RESET}") + + + +# ! MENU +def menu(): + choice = input( + "1 - COMPLETE PROJECT \n" + "2 - CODE + HEADER \n" + "3 - CODE ONLY \n" + "4 - HEADER ONLY \n" + "5 - MAKEFILE ONLY \n" + "\n" + + ) + + # PROJECT + if choice == '1': + print(f"{Fore.BLUE}FULL PROJECT IS BEING CREATED.{Fore.RESET}") + createCompleteProject() + + # CODE + HEADER + elif choice == '2': + print(f"{Fore.BLUE}A CODE AND HEADER FILE ARE BEING CREATED.{Fore.RESET}") + createCodeHeader(input("WHAT FILE NAME DO YOU WANT : ")) + + # CODE + elif choice == '3': + print(f"{Fore.BLUE}A CODE FILE IS BEING CREATED.{Fore.RESET}") + createCodeFile(input("WHAT FILE NAME DO YOU WANT : ")) + print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}") + + # HEADER + elif choice == '4': + print(f"{Fore.BLUE}A HEADER FILE IS BEING CREATED.{Fore.RESET}") + createHeaderFile(input("WHAT FILE NAME DO YOU WANT : ")) + print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}") + + # MAKEFILE + elif choice == '5': + print(f"{Fore.BLUE}A HEADER FILE IS BEING CREATED.") + createMakefile() + print(f"{Fore.GREEN}+ MAKEFILE CREATED{Fore.RESET}") + +if __name__ == "__main__": + menu() + + + diff --git a/stack/src/main.c b/stack/src/main.c new file mode 100644 index 0000000..6debd65 --- /dev/null +++ b/stack/src/main.c @@ -0,0 +1,14 @@ +/* + * CODE MAIN + * Author : Jonas S. + * Date : 17/11/2021 + ! DESCRIPTION +*/ + +#include <stdio.h> + +int main() +{ + printf("ISSOU\n"); + return 0; +} \ No newline at end of file diff --git a/stack/src/stack.c b/stack/src/stack.c new file mode 100644 index 0000000..b5bfae5 --- /dev/null +++ b/stack/src/stack.c @@ -0,0 +1,48 @@ +/* + * CODE STACK + * Author : Jonas S. + * Date : 17/11/2021 + ! STACK IMPLEMENTATION +*/ + +#include "../include/stack.h" + +int32_t* create_stack() +{ + stack_t* st = malloc(sizeof(stack_t)); + st->data = malloc(MAX_CAPACITY * sizeof(int32_t)); + st->top = -1; +} + +void stack_push(stack_t* st, int32_t val) +{ + st->data[++st->top] = val; +} + +int32_t stack_pop(stack_t* st) +{ + + return st->data[st->top--]; +} + +int32_t stack_peek(stack_t st) +{ + return st.data[st.top]; +} + +bool stack_is_full(stack_t st) +{ + return st.top == MAX_CAPACITY; +} + +bool stack_is_empty(stack_t st) +{ + return st.top == -1; +} + + +void stack_destroy(stack_t* st) +{ + free(st->data); + free(st); +} -- GitLab