From 444f7d2e05287dd38d697670eed121bbc84c9be5 Mon Sep 17 00:00:00 2001 From: Hizenberg Date: Sat, 3 Feb 2024 13:41:49 +0530 Subject: [PATCH] static and dynamic lib --- Static_Dynamic_Lib/dll.c | 60 ++++++++++++++++++++++++++++++ Static_Dynamic_Lib/dll.h | 56 ++++++++++++++++++++++++++++ Static_Dynamic_Lib/dll.o | Bin 0 -> 1560 bytes Static_Dynamic_Lib/dll_util.c | 68 ++++++++++++++++++++++++++++++++++ Static_Dynamic_Lib/dll_util.o | Bin 0 -> 1816 bytes Static_Dynamic_Lib/libdll.a | Bin 0 -> 3672 bytes Static_Dynamic_Lib/libdll.so | Bin 0 -> 15560 bytes 7 files changed, 184 insertions(+) create mode 100644 Static_Dynamic_Lib/dll.c create mode 100644 Static_Dynamic_Lib/dll.h create mode 100644 Static_Dynamic_Lib/dll.o create mode 100644 Static_Dynamic_Lib/dll_util.c create mode 100644 Static_Dynamic_Lib/dll_util.o create mode 100644 Static_Dynamic_Lib/libdll.a create mode 100755 Static_Dynamic_Lib/libdll.so diff --git a/Static_Dynamic_Lib/dll.c b/Static_Dynamic_Lib/dll.c new file mode 100644 index 0000000..59f960d --- /dev/null +++ b/Static_Dynamic_Lib/dll.c @@ -0,0 +1,60 @@ +/* + * ===================================================================================== + * + * Filename: dll.c + * + * Description: + * + * Version: 1.0 + * Created: 28/01/24 07:59:34 PM IST + * Revision: none + * Compiler: gcc + * + * Author: YOUR NAME (), + * Organization: + * + * ===================================================================================== + */ + + + +#include "dll.h" +#include +#include + +/* Public Function Implementation to create and return + * new empty doubly linked list*/ + +dll_t * +get_new_dll(){ + + dll_t *dll = calloc(1, sizeof(dll_t)); + dll->head = NULL; + return dll; +} + +/* Public Function Implementation to add a new application + * * data to DLL */ +int +add_data_to_dll (dll_t *dll, void *app_data){ + + if(!dll || !app_data) return -1; + + dll_node_t *dll_new_node = calloc(1, sizeof(dll_node_t)); + dll_new_node->left = NULL; + dll_new_node->right = NULL; + dll_new_node->data = app_data; + + /*Now add this to the front of DLL*/ + if(!dll->head){ + dll->head = dll_new_node; + return 0; + } + + dll_node_t *first_node = dll->head; + dll_new_node->right = first_node; + first_node->left = dll_new_node; + dll->head = dll_new_node; + return 0; +} + diff --git a/Static_Dynamic_Lib/dll.h b/Static_Dynamic_Lib/dll.h new file mode 100644 index 0000000..703509e --- /dev/null +++ b/Static_Dynamic_Lib/dll.h @@ -0,0 +1,56 @@ +/* + * ===================================================================================== + * + * Filename: dll.h + * + * Description: + * + * Version: 1.0 + * Created: 28/01/24 07:58:51 PM IST + * Revision: none + * Compiler: gcc + * + * Author: YOUR NAME (), + * Organization: + * + * ===================================================================================== + */ + + +/*Header file for Doubly Linked List*/ + +typedef struct dll_node_{ + + void *data; + struct dll_node_ *left; + struct dll_node_ *right; +} dll_node_t; + +typedef struct dll_{ + dll_node_t *head; +} dll_t; + + +/* Public Function declaration to create and return + * a new empty doubly linked list*/ +dll_t * +get_new_dll(); + +/* Public Function declaration to add the application + * data to DLL*/ +int +add_data_to_dll(dll_t *dll, void *app_data); + + +/*More functions*/ +int /*return 0 on success and -1 on failure*/ +remove_data_from_dll_by_data_ptr (dll_t *dll, void *data); + +/*return 0 if empty, -1 if not empty*/ +int +is_dll_empty (dll_t *dll); + +/* delete all nodes from a dll, but do not free appln data*/ +void +drain_dll (dll_t *dll); + diff --git a/Static_Dynamic_Lib/dll.o b/Static_Dynamic_Lib/dll.o new file mode 100644 index 0000000000000000000000000000000000000000..370597dcb43beaa56ba74b6a8140bd6dd6329245 GIT binary patch literal 1560 zcmbtT&ubG=5S~p-6Kj=NJrt|3C#hnWrg|zWD>3#VqD2VQ)3Qm{R?H7bHduw?q4;CT zrAPk=FWz#hLJy^Xgpi96(L=rUAk_I@-q>Z`lYa1aX1@2$%wyiZSEc)RGnPdHi*C_z zBrMU)*sTQg0^I*oN(qT^Fw%)O{xmHbQc6FmfuL z4ms6UqY*TjYqr9`S$?;^GBOxZ`6Ko q`fnp(O!C5vlli#U +#include + +int +remove_data_from_dll_by_data_ptr (dll_t *dll, void *data ){ + + if( !dll || !dll->head || !data ) return -1; + + /* Searching for data linearly and deleting the data*/ + dll_node_t *tp; + dll_node_t *temp = dll->head; + while( !temp ){ + if( *((int *)temp->data) == *((int *)data) ){ + tp = temp->left; + tp->right = temp->right; + free(temp); + return 0; + } + temp = temp->right; + } + + return -1; +} + +int +is_dll_empty(dll_t *dll){ + + if( !dll || !dll->head ) return 0; + + return -1; +} + + +void +drain_dll (dll_t *dll){ + if( !dll || !dll->head ) return; + + dll_node_t *tp = dll->head; + dll_node_t * temp = dll->head; + while( tp != NULL ){ + tp->right->left = NULL; + temp = tp->right; + tp->right = NULL; + free(tp->data); + free(tp); + tp = temp; + } + +} + diff --git a/Static_Dynamic_Lib/dll_util.o b/Static_Dynamic_Lib/dll_util.o new file mode 100644 index 0000000000000000000000000000000000000000..b87b05c340449d9df87466c2c2fa5d25df05e5c5 GIT binary patch literal 1816 zcmbtTO=}Zj5S~qIQ#DHbI27t3CuzZ~ZSm3~x>94;59$Z>ASiLuY;7=`gv}dCh2o(o zECHzpFa82S5WM9m=1}?%JoX|4;-TJh5bDgkGj>_liw?XyGtWHp@y_nPEZn(~G7Jzg z;0hdif&xs89@>^REy%!eSh0ie_STP_9c=dPptWajZT3N(u{(vn-2wa67nMe64_fK& z0m|U1M1sO_u#C!M_Cxy~MfdGM>!BU&^r?TB9)k&{XOTX{ zMng~^b)(&$o-Ej8G!qhOA{<5M9?`_dAyKZN$8RH9#;=M^4H(AJ2Dih4R@UCJ#;M*P zUk2Z?vWGax+?vLBKpXGHgSS2njP2bXEG;fBrHWI_&CZ!~=1hL}(lnb?k>qTs zzH2PJu6~)JbG=hLUYU)o}L}CtBm)UuV*H^T&)&c zs!}yq!FRp-bGKM_lv7;u>t2y!rHv41C?D2**M&+`|15EQ{x5ir>!eWA5wX}1T<-ZKhRZ#{Y;JhUDWO(=sMp2v-Kt|Mx2?dWJA+wj zHo;u2d!AcEtX5a9xwO2JZz^Z?8JL>xuH$MP&*gUit#Vj_RxlQ;WU+sr_aot$3zHb2 zomxU*Jv9;_o^hr#3h*}Gh$C_M0^(HjU-M@%muk-7iHh{kMM1Qs zzvzVs7Nvd`LKIBk-eoNMjZsRM^V{S^MD{1pEi{t$-$>Yh8o81$`=>VX-c);r!4Kr1 m9K%B;4kyPj~fE?p{BFzfxp} zR^4c7+im06q#2O;V1s=vH(KeqQESUxUFkrWMYRR3f%T^-55Gk3dqen0+RLFNYBP7! z$@T1Zam$Tzn4{yi!M$_8bxPaCZG_j!t^1m+MpKWe7`I(~>_*op2kVmt68!Mh_>0~yN=c!6af|Uj)HFmKHUyWtz-}(r zLT?6j7-&5&R^V4XJM@=Au<3Y#J=1K0U2fEBejTxTBlPVnSBoRf&?|omwsQC9OS6Gj z^Cj=U)fR3*@9Ma*k;C&p44i!9auz4lJ0}jJeS@2mXZ!?eid82AH60z2mvImtJGKPF zi)JE)YF{>$qCV4}|1`dUv6M>cL{o|6w|Fi}$`U<+3u228={J(V1m6!Ci+@WL?{NGL zn#4r4pTerxnk5yCrFGx$W!`ku2hp2L;k#%L zSytDr+;(haHf#Zv*!sDfSvwGq(a%2!mwiu;J+AszaaEkl&c)X&J6!h(;V56zqZc3j zr(8FPTgSOh)r!~%jwG%dWq;~S_+RLx}c4n-OE{jW9~_x?#uU;xb(k+om-}*9PW{GA#QT_V z8mAsKK8;f)-r~HXB){khTo7A)NZ(BY6MWM+b)Dmv;+vu^oF;G@r!FS+|1g}I=a2pe ZPIOpK{hj0Al|osYZAs-+u75vH{Tn@_|B(Oy literal 0 HcmV?d00001 diff --git a/Static_Dynamic_Lib/libdll.so b/Static_Dynamic_Lib/libdll.so new file mode 100755 index 0000000000000000000000000000000000000000..2780a97c05716251bedf34d99399d8c13cfd451b GIT binary patch literal 15560 zcmeHOeQX?85r21yn@f|}N1A|>l;%JQN(#BS2?;5cn@jwWO-bA|*ndGqqzSg#X7tKOTP1kVYQLMvWoCo%n`y44 zv9OWX356ev>=%g}edO+1Iws?RMvPj=$Z>9y{`_=}*n#SEB5dEAUQ+WhG4Rn=fkEMS zANg^d@3$fC`(?bj@)D8wLFIJy`7NWt_%iM4=u&6Ca_xzKj6eE%$B!?adUfpfwe?@J zf6B42egXa1kK^lXO{i!%Mx4PpU+a%Q@Z96aFTQ@yfxp=goqy~P-#>Hti`rn8!*>W< zIt$L{6PpEh2%F8Gj@CKeyBLWBf%K{Beyc^^D-7 zg0B~RQ1I*0&vykM5WG$B7X(+f-Ji*2?SkjzJ=<3H?#{h-(#^a5se3 zqcY_+aHR^zy~c{)R^jp|PTNmZ;oMibB@Bmq0eGYemp^$>1vJP&kbxirK?Z^h1Q`f2 z5M&_8!2di0)`>qwtdY83ZdA(p#+Vl_U9nDFj9e&>Q`+(>sY+{KqhrJB1aU0$TZx*Q zC{bH`o@HLFPhHXSqa^o@q66z>^9ux6C+mL5HJl#nwpkZG=zWPhn0b>F`S3a*{&_$hXFS>M$w0$cK^>eTm;7Ugq&$e=+_j}Z$iJRXnv$?!WxbeJ86w@zKTl?-!((~_aGTdqP#SC zbGbB3p-q3TJo0!|&PNg)i3xnXI{!3r#wQn2+}e%!ci+)GrI_O45R1=Ghej`7Q2IWq zxpVmP1TDxwkbxirK?Z^h1Q`f25M&_8K#+kT10S3WgjUVFi@zoFcd6LbQmLEhKBA8h zU2&~cdX{J#(J`XeiB1q5{Y$CDpXXjA8Z)2i6n_im7CN$Dg$ARcRf`uyMoG7Zuv_VO z_N`K>i4E$b?e&fKG%PwCIi|L+yzBPOYxHMT_UAap$WFfuvn@6D<&VJ+P)z#U>W=#8 zH^VJUZtAB2ME@Ysqomj0MxhV?NE@*K)AXyS*!4Hnvi?+A{|nMTLVEoz7W!nR|KF4T z3DWCtxX_1(jREO`7GxmEK#+kT13?CY3VAz@sV@`5<6^!8KcwxW<@#aZr-+#?{-@@^=Q`gX=>8j2f=|TPX6yeaWD{0P z6z(s${G6DOTCQ+ifRAf@sq$afE82jv8iS>wZxG>rkT+=G()cok`v!O&omiN5d6WyU zMX`wRr7)_Zw`%;o_3ob#++QERiSSsJKiCej_t(dNL2!S4{DT^YcZGh7@K{AGbI(XW z{(Ac7=diy-xc&!Kxd&l-^IpL#_VvYkRi*6S_A+)a7v2}BK0leW`_s7|Cv7LaT)tpC z#X;4Z%N$I*o|}v}&2GWP_$k}T=ba(j&3gGEDyVldRB&I+WQNG4O0vn)t1+cod=7^y z@{3-IS=(;kzhiHk-PX~{djz;|9=4FP2b^q@w+6J{-?3xw?iNC67l++uiG$U;pCH;r z0M}i6?%la#k9}`@`{&y_?am!L_q0)m9D%O*PgEE5R|@{CHx&H49SSx31^(j}1G6=u zW=P*|2>-4HJ@)(90a4SZiWi15p3_6r%NsfXE}Qe*cz?DS?ZAFEd232PY}j^!yoGqP^>%1 zL^tUUqOyqNH30na+y})th#z*KypM?26p*p50FB8={`dt}Nn%(B|1lP*fnptl@%`tY zC0lmc$xhU;E&^>bu+9;$rTqSbgmF%=ZYw`G@4_=vhZ z%vXK>`@{eg@xmW6=)*q$Zt(~GBN8heV0`p<(&vxoI4IVSu$RjNQGHwd%frM(CA3vU z5WoNTNWuAozZEll*C49OILthVzCWuERs5V-xseKi8#=?4?vpA1ep=gT6+pYJaSUCdGeU z#Z`0g1O1K9AM3SflW~L{y79}uBL!oKAM3QnIs7FZ=uS-#$C#Lxarmz;BZh&0HO1Vi xHr<8}B`|*PTTVa3kH2d?zY%+l|7Ih-fq_Kn6BTdUo6UdK7UM7_ejtATe*vU@w2%M* literal 0 HcmV?d00001