From 5984c699bff987a0f4fc30707f33b98e99b8ae40 Mon Sep 17 00:00:00 2001 From: zyj879580 <2322139806@qq.com> Date: Fri, 23 Jun 2023 17:28:37 +0800 Subject: [PATCH] demo --- .../Applications/app_test/test_hash/1.png | Bin 0 -> 19121 bytes .../Applications/app_test/test_hash/2.png | Bin 0 -> 18646 bytes .../Applications/app_test/test_hash/test1.png | Bin 0 -> 14397 bytes .../Applications/app_test/test_hash/test2.png | Bin 0 -> 16631 bytes .../Applications/app_test/test_hash/test3.png | Bin 0 -> 24359 bytes .../app_test/test_hash/test_hash.c | 286 +++++++++--------- 6 files changed, 143 insertions(+), 143 deletions(-) create mode 100644 APP_Framework/Applications/app_test/test_hash/1.png create mode 100644 APP_Framework/Applications/app_test/test_hash/2.png create mode 100644 APP_Framework/Applications/app_test/test_hash/test1.png create mode 100644 APP_Framework/Applications/app_test/test_hash/test2.png create mode 100644 APP_Framework/Applications/app_test/test_hash/test3.png diff --git a/APP_Framework/Applications/app_test/test_hash/1.png b/APP_Framework/Applications/app_test/test_hash/1.png new file mode 100644 index 0000000000000000000000000000000000000000..7af2404ebf9641aedcc6c00356677a5a086827ae GIT binary patch literal 19121 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 V414rpFR%b*@O1TaS?83{1ONlevLyfj literal 0 HcmV?d00001 diff --git a/APP_Framework/Applications/app_test/test_hash/2.png b/APP_Framework/Applications/app_test/test_hash/2.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea3c1a7fcf375ca63c7054b7709aa8e59fa13a8 GIT binary patch literal 18646 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 WCiuGaTj16M1_n=8KbLh*2~7Ynm490R literal 0 HcmV?d00001 diff --git a/APP_Framework/Applications/app_test/test_hash/test1.png b/APP_Framework/Applications/app_test/test_hash/test1.png new file mode 100644 index 0000000000000000000000000000000000000000..77adde0142755a17e59f8a337c51f43164c0606e GIT binary patch literal 14397 zcmZu&Wl$YWuw5L2TL=)`g1ZNI2<{$SZ*X@F?ykYz-7P?HcXxO9cfa@kzOC7E#V=-SK!Jz3VcPdmDF?q01U_fPKb3= zB3E!Hx}%teqq2>uqlVp?lB;0RRp793{mW20%bS2+@86 zB=i7(z@H581&ANJw5TB={q?c!NA#h!>JfpjztuVde8C4?{hm#_ub|d0jQ^_)J1H^o zV~_QL-il{LRvqmD|yQhvdDY4tUAu6~PxegyN7Z<{}3lDfS0MT7IUh zm0zc3Hxu=+q?Mc=TS!JG(;M1IJr_t}wm)#Wss^d1`6YX3vp_^9+%x8#ANcc4`*Ozu z3lGPX%CfiVaqk?G9pz&$Djn{GdK=d;x>mysAHF;LxupATH@W999#Qcpg)>SOsQt5z z@RN-`7v37%mmuWpkVsV8>?#)Plg)fT{)rtWPUM_d1x;vZ0Z0ikF#w{SRv9*3F=ZT3 zF))Ag@hlfU=Ccqd8i;?pa>_8u$w`;D(eG|Pt1;F#q#(_i_F#IlGU0q!d^LQ?Fc?&T z7Nu)?v=NrmwnjDq#w!^N-{0=2h#z4Dwe$O3()krjdStxh{{{vn7X)^8owxN0#>J!e z|0Cn$;~&)wn71;}a2M7!71kXXF&e>xaSLn!S$Y zjggSsMW|@un}F~1CXefg7JpKux`wNH?IP(1@q%|$t1rVP7{m%Fi#np=TU>4}oL$1O z^pqc|&y41Ok50fiap|eYWu@M2899q960Ga)iM?nOwY$D38-CppQSqJ)Q1^+#IH}Bm z_WzgaHW>Ijsj#C$8bzwP*+Ngiy~zXu0NhT4)3f6ZX)&?~vowAciXth&cOtL=#PFLL z1r(PR-rK$ISqIU)tVGr;_AE7O%dS0XpdwGJ!irW6Uv{b&?Uapqeb2+u!^M7vWF-xN zD_!v~BmnWh7VrMnW@PSRJYPMC*VgMJ4Id$0deV5QFvm-~O^OMO9Z1U`+{=9CFPT7M z9h=5^(QA@K>ZXwnPaDcJ<4x$}sQ54GsN023=4qnEb1OpM%#Sis*W;TaaaaddWuQr?0@esRB~3rD#@7nKx)M5X-2eleEAg#wd*5pck@3)4|n?ydbpL;_}pW+m7pBZk)URXE) z^50GycmR;EhuAlbWAEj+7udLN^J_IzXMC_8i=;30cQBH=u+a?@n!;xQNWy;GRW!yF z^lVK~3>#dui}OpSdEYUT^Y=lqAIY5?H_U|#*BojUft~Cpmlyw=Vcrq)Lr8#jBuC*^ z_o9Mm1dZ0m>+bP{!G4}IyI2#${eiw|%U1D!rvwv&kk8xwZ9E<)`@~%dh4;g6B&>{x%RVr_fm&VeYOEaJKB%n^$)`)`I zI^N}!3%iF|Sub3XQ9Fz+4NQ5Rrsn!(HnJ{L9Ckq->Sv`nDcG78xI^@$0XoxK>?(8j z{vVcOhsx_^xh$pVsmvplm5CN@h3U1+KWj97|9tG`WB2$F+9zXD5Ok-f{`e{?b_mbb z!0%B$yNgsf_D4uK$VK^a1riTGHKe$h>r?l+l+pw4C&)xxkPRn#B%jlnF2aR&B9H4e zTfsJ*ymBiR?3ma@CI3XVc7CC#gzuB?#p*fjhR)TMUH9N11eMd*XwhG`=`I^r3T47kI=upyZsKBf)#XtbWQWHm?Mc7mGvl*V$@nbZhF$UxKh=6N z=G=C-;aWpTt(km-AC7^cY8st^M2x+~_37N3mnrU}r~GyRw;{95?DvPpR2yfwNSxe< zuB7i!+Gt<%79`hk-}vm|@FM#&rmeD~4YRR=r-?|+ zeD8FteZzQ3I0=2aD}DrEv{s@QWdAox<32`7KZc;H4d;N89XqU}GO9sz&$iw-GlQD! zu3p>oPYn8M^t$c;9CFH;)U>ae@25|!&T!^Bzc+5@)LM_-uCZbHVj zjwk@-8ILiiN6wNzL{To%(>QifF_%^)dM;dlbCRQzJiW8-FI6O9Q<9Y*XFMpjB@uDG zKf&qs>#7r?Q%;cw(=T&K==#ITMzlw8dMtcxR-9jtd}inzmAK5j?j#4zJb71Hi_joEmPJAcZ4e$;lxpb z18ob%Cp`&OTuacZcCH9E9;q7FGrx_R;z@5Z2Kr3ePZr4r2O6n4$I3S>?~#3lRPO<( zd|nSnvf942@B8Wh5Yp;J_ijNyo`>W91274q$F~W|< z6NTlisK%v!sSs0`gN^1O$p6>11_1y(rvxu{xxe~*of1C_yB;4+aV`f_!m%yPPxqN}SNB&LD30UreN{vKocuOF6fw)d zic3Vu+U-IBIFO?)O;uWz?`-I}{iDJWHGb@!i6WvDGjU?ljA4t^HBI8@zPo1a>Xj-r z^|(Je#c$Xb*Zm#X>F|9%hVPtzw&0uD7KTrY=C4(PFf0+Y0KpH9Ih-q)= z%{OM6;asKo;kxVIBYeHuGqdN*ahCm%oL~Pob5kxk9^na(X@9@;R{;Ht(=I88u4~^2 zX8?}xhmAJXH;$X`nMm%DTNg_EF$9w9JTo`Of9bfF^=GsO0Y`drap{of;x39poiS|h zmtFM+NY_0J>lX5O*>0BTYpK8Q8S$u;u<&v3PE8K;LLS`iz5rr+HgVx2+j~3aQ}6u~ zxrjF{-Z&%(Fx-j>FGHB@8MTfKWOs7*WKD^9gO;>mw0J9BXv~g?>v?-!=5J45KbQX8 zZ5KuDdLh1VD{6u7#I2}f z(BO~s;^Fbkt#bnu4TIhADo5H27$F0j^vymSm1lALyAD3C0*w6-BqPX#l|dUw5#I(& zyv7#rie*RvVm8;BiE{(}S5qPZg`|8ZtA~O$?!q!6@AK2h@VH_ujOx@o_6B5fWMrpA z(>QqCGQ;@50+arrPPXgei2ccmeU{GeR>b|~_k|uRW7*X^Fij6gQFTl0h+&IC3yp*+ z_TB@3JL`?{5@E~t_ieE7ieHI5#6ZWHtr*BLy`RI$VuZl^gD{3*IgAi z%{Vsi67%);PY(Fn8o7gKcmwYaZ0h5pb<%F2Mp^;1p`)_TD6S6w%x41br;zuiOT9iF zP2`OSYU?1!wV!+Ec6+LfWtNeg4a1Zc+pyH&$j%D-(e*S|H%?a!p`h%Ir4(B3Z=YFM znU>Ss-q~-rG}|MgX?BFhI~^KR5J=Vbn$yzSD?7-odLXM;#ZGCf@zI_4#QzK#SB;OboBVr@!`N2cL(?Tvx-DZ5MFKK2;X;;ww|NkjvFCJ+1$ z6t#DvjEi~{4Tyq5Ki(Wt`($DEE1yMCvyI-&s|JeF%D)r7G^KhO;Hyap;I-j|1Y(|f zK`hf~6x5pIwT126tq*qLtOS3K3r7~Hr&lhpXv3SG=NS<(QC6B$9 z%bz@$0qRz(a3Op*mp-!o8 z-P#RuICX|=e)RIJ@fkcPyE;2Y4i1gBPq8Xp^sY--@AxJh>7d>cWud-&*_zv88PAsEZ!8&^E;qlX3lo(GPQ%>h0l|5_DLBzb6h$u0PHu9UUmvdIasw;El4x;piq;51QaPDYmTmi4*a9Zy4S;?5$EiCZW6K5>A_l2l89?U|7Z4b@jKORd@a6>vXMx z1$?zwd-~vWQ0*KD^)Q-UC4Q!J@-9gZT12`VVQwU|NiDnX#hNhi5WQ=idp7ybgrCGs zEYcTk@O8598rm$}4H6x&LR?Na8AR);uJL{)%DQbqVqe8!t7PM1jzQ-@96s71bmje zcsaD@!KaNv>?D*ni9rXHx?s{*6UlVc0~0Q_%_%uXw=TQY#FFUfq{Pi^maS**t>S_x zViy~Q`PW)rp7IY0{dhV``iELtYKE_e=D2=h+h7JRFwU2SL^`EZE$d4PgVF+4n2=~A z+Rzdd5zA9Vn z1mX+tkWXrkK+FqcbZcdu%|IHy6F^SyvOYgmr&(wA4Il7LbT~MySmaUB5)v9T9)DKF zXUWpJy+w4@TEwc*IJ`G$>V>2J$LhHTQ$t=qjGzg*byBEy(dJ#BzQ zCi|Ky#G9q7spDCyrh6PjJx`aKo17<)@`2JvfpIgX$c5h?k%bVxYt{gemJrNRGUVxS z+bqYu%+Q@q%K2JTWwPq0F0R9e+mpz^(J_G$FkJRK`X&fFmbl$a=VPru|m=9}7p&{=`tWXE6h;97l^EsaH6hvTdmkvB*Hk z>?DH2SXmaR2O{x^LeqBIV?+0yhEUCUqQeGGJJ>C`5$R_UfukN;%htTe9$EZ+C+mju z-#$S#nL5{lQ{OoGE0xl51zk;C3|W=74+Y$xGb~V#DP6?@`;Qs6>0BDHwE?dS=Uq5+ zK33=1)*P_FH-8{~%^{mXR7Fh{e-Lc&N&gT$poZl%&P*c+N?6-Zgnc_yqR6YqmZAp* z(^!S%IfC9|DeWtqdM#_$3wGH6KoeB^Qqg7YNNlZc%q@qRT!FN*jXlt$l0hk5QDOqA z_qOMCSoZn{jy)ocr?$OO>FmWUR3En?rE?|6sn9Fit8bMw$zg9IvNq=m0-ma?#f1m*|Lc<-rfZ%J!g zpYEN=lo?(KBg*2ZaC7@dJ>y66oVGO(ifoi`b@d5Sb4IORMa>O`b0344c2M}6Pjh)4 z&Y}jLKF5UAcV;Ph4Gik6Z(yPqh6@@Ie5{Z@+PRKp!*@Z&J!`0s@C(!b&I3=6Z%8Fg zD5=#>tt$XK8MDIF?c4{(kr}B@7oO&2stKZ`LN}c0MOr;&=b$VX{rUa(a0}NtnTH?} z0KnQ&jijUHOnze z&DcBilWo)|;P{c1(|H0-7yw9OOUQpRYnEocRIHrDwT`)8ZGAoV)$D9)kJQA~OymK8 zdOQ61sI*Y$se>iAWZ9zAXoD^Gq3C-Ght9mTi>qasHRnrHIm~V|n>LA*<>M(xOF8zn z_j*_S16HXJHP;Z`q~}m}n;HMZfa8V?lADoV2IQUdJEWhSyfBif0#KwdJ3Lthw=b2rY zziJ8GG$S@2$ak7#T(Joo;`-%-n^wLLQ1C$h>{8<9B#Y)XCtR0|Y(YyK;ub6xR{1%T z@9{9bn<1=*kw@HnjfcmRTd_wQs<`YR-eBDxy;v+&Og&vPat^nMBe2oL1rGp{Dy>ZZ z0FWpxj`m4bLo@}s`-#ucKEP3=3O1l1i1HGHI8zyR!ffD4fDDr?7tj?Qeq zXxN7y4$ex8PTgJmHn)sNL~M8-FhoUNjJvMOPWHbOUG0|B0Bn34#gk@a7u<1(g!`=#IkG0lj;m_7H0X=6yBjZ#40c28q!P~F;96Aln0IQLizz5(gR zeZ(pEi8OxT@)#NYEU8X`*GisoLNkvmo$2gKx;vl!wwPR3wvau#uS9e7ruLQZFlSKC zHGjX}8yS!)Le*4qDvTan{DD=Kl}kr+bm|spPu)~hr;D+`q;N@o8?^c6C~i7p{S7qTIB{Nh zR<&1#{tM`KzW~+z6nI!xPRp%%qd~r;hnUBIzb zdT`X{tjQ%CoJ=H&uA+H0tke(t(m`o24mEVQ8)sK)SmU=b&S*Mo7yU=pU*I~Cn!DAr zXwQg8O`3msf@9Q^az*J|a4NM~(*v2WD8wiv>~NLl zlm-{N*CKdVkU{~zbOoFSr90LuEk?6JH-@|>`6L?d=2!NEB6c* zE0Cf3>4;XE1iX9P3@@AQ3Og?+UsiOK_cNE?fBwEGr>}=1FW|?)=DE*3q_E?Jm#KHjPpVpW!D~ZAY zh2RUX>U_tFI(#z&84F4Uf$rC%J>f~VS! z+i5Lt-sW}qw_AlgubR3x;^Z-v7)GM%v;qa$H-w(W3ce&tvcQ-{mg7>c0m>qK&${$H zwJ5y(U;vo2eyDRW&el88XNLe#tVL(4&DhW2Z*~+nI(`(4x{K^5G~U;yDp zi9s7i{+;a++!TchR5`A7y-%P?x~e`}S>yt%b-wm}52N9EA?$(-3$pUZfvFW*29N&8 zo^Y~PP@$fW?(l;yxpBQ`K%S%jLdhYR;?F?$T75GmG9ysU`GjXipAy$HP6iq=K+Yt6A~RuD6=9%JWqZg{;HzoMrz zsagBJ8}FHAAfPGZ5@IX&)6mUHb_7+V#LR%JET^%tb&df{a5z2X#fnlCJI!TGj4rc8 z*$b9f{9U|@xQ?rB{2j_;uiMRs1EQn4Zf*i+;5OHI5dWS*OVxGyr(HS^+!Xfrt0TU{ zc=GJHU!O=z{J)#--2HKjRA;_Sd}Lcju8m_w~<#tX7qH8<~oP zw$IKu*O00#YmVbm)ZQBdtRTCA%d`Xj@GK}GCNXg@HY|k&;!K#Z^(y8;iQsF4qx9@YHgjenQ3HI|DL) z8lzbF#0307uGKA1clo8Qf(!`fhK7Yo&ju5<8hINuOthv1@hZ2$6KddeeF#p^cn#h! z&^vpmuE)OzPwqXVaww@O9~Be^7OsB(oH}uMty7y-@lszw+*et0$?&(M3|> z`$(5ra>m5v--5;{>QIeqApShbD5ayrNDddG?2CvRN9+wr=b2U(vDn6``LKixl?Jud4nipP_DQzu+!lBmk&fYG++a4kqFE=CJt-3v3aro>ls zTY}@!8QuwZ_vzFV;#CzR zUkDDFROD6a_Xa#-9!&yJcI+)|i?#KzbxUzT6!s1kK4 zN@lg94VPKL$t4++9wVMQqHAa1|Jh&pJc@EQ{JPoYbV94B23kt4&yXhcf>5=+?ebdG zXzu(*#>T}@N6A1(NmBBs^6oRsM3qyBSB?3BR`QA8K$Z_3cgC17HWC5IsaC$+ksn=s z)u5*Ky>`+lsrDPN8QFr0vo?Gr=hdC&!)E^WK_8M7A-!V8APWU2xX7hlS|;etc4si- zn4XtKx$imE-pts5t1!RVl)OO zl@v(u3TjFMxWSdFZf1x!g4eS@STxh4r)ni)1XwCoS3ds1IdP9&W-y z4&_(~DCcx^Gq71zXPf{PRBk zYW+ANV}kzXk(>qB>}m$NI8IATT8WKiStl{`sldNl{x#B8RNTzP?khwfg`hDS8rrMA zzdf=L8W9j>>z(CT^y0R(21xV_I)FeLPavF zF`Hc~RNj|cZM;mxWd{C1A1pb7I>-6G{`?`Q6;Rwm%E(I1vz?W2xL%8ukm|`F!`6nX zDS2SL?wLR4186LHob6j*aAa_bxuq>Y_>3&~$#7(in?lkQ%t}m1rbp9vrY49|3Nxak zz0x>x_z0)}GiUb6y^epic}DR*H+A0lb{Mv`cN8AI>wir?F$gE#sVgu+5y zxYIDrJx6q!{ipoE7>O)AA71GAJmv8*XpN5(UJe(v!zu?zl+#?iVXM zcJdaYufjI#7~LNJNRyprNNiU@LXvsIP(YzCeDt}+_vI@t*Uk=XKg7B;p0|Iwr&WpY z-7K17VBz8QwwJA)PKXpYmvJb8#Cn4{IADHg(U&ogMH4pCZJKzkuJtD&ekLX7P2@e&TmRg~Xb1GW=|~j;B|80~~N^y<8SD zUDF!y{r6};rWid2_dq4UK=M5t-ka!Og@5kObQ}t?(#$J{mpDR0rth?<`D26YOk)W; zOQe=v-kT@)ThFq_wBHxI!5PkuKnAVK$gshI=r5$9`N?F{;_32_6=xE^y3^BAtbtQ2 z*Y11U^J#LN!)077{#85T)^IUhA4XEk*2c2^mp4r`dx6Q1A zgRZ9ci?HT8bhF7n&!qnM+|hNr5Ntporo7zxYbh)Md^4JtC^xCB<9$sVc}P`NUS94~ zbaS)Frz|N}oYhd(5|@;!uV3aZR=uXogl zVt9CWlooaX2hw-b_vY#a8X&fa_(G}~r$<&&Og!Eqr}RZgk|pdD&1#3FqFzl3rz9OM zsO@dG&irY?G|w%=#&)1@t&CojHSf~^?5nQJoY6m#CIRjS6$BW-`JEjRv+G~uiUF&V z2;_W_&XwAH_F1dJOAhTwB|UyKdnKG!boKdaX47f|DJT8LXZgoJ=&z>rR=8aH0(L0H z+tr~Rc6JCwWZ*eslM=&5_*8wO_GoUqg!^q;+P>gmA9dxy4@N^u3WkBQOj2SoV!H|m z$MAl!$XR_%l8THk|cRx$I{5iD_ zPJmDkp=wClGkxyJDlFq1sV!BGl`1-cF51=As$lHx&uuB;ZZu7rhrUx{%R!?tsQ6E_ z0yu_gYSl+@7{U60lTV*!7yQJ@)ZK>hF(-v3P1M1)1l6V1?+1Tsd0JT_ZZkgH$f-SN zlEt#3dYu0w*N=qaQ;(KHt9hFq%(g^&UFoG&gwyaykqOLLtG?EAG?k5h;TN-+TMm`{ z7ZnZ@_x3DlU#g*<5U(yPiR!-rnAK@4lM=cVMakGmv1!HZyM= zcdTM|LV}ePQrRCe;8LWdtv{eKwTJwRG@YaTny;FWCe9yq@!a*YpvddDC?$z&6AANs z{q9()7X zt2a%0m{_{2L$8Ajj5Z1Lr?LUH3XDx7sAVh4w&KGG(N9$0-F0w9?f3N|yva)F{z#2f z@95u&x;%RH(mF9#KKkzIGZWbE9jFKUZsI^r#VLZGW~nR2UN9+QZ84E|z4RD}Vom<8;U>&U+wL6XwofR(ji2K`U)Bn?MMu?{peG%#uUzDvuc z!9_VIN%g;@>-|U}ld2%QKTK2@M90rH#K5x8|C+TgOof>g*!!r&%N6nEnM%Gv21=2R zkLSfY03dh*YGAhgz2!h<75zA$pwCZ(BPA>)Arwe%O%9_qXK;af>X z3ns%)2d?uGe@F8ja?m7`X3ESE4jz!O_p_$Gjdi*7ToiG6jDCsBvYh&H{tX&>v z2@9m9>i2l3j>Tt2dv&?sLG;+jN7o}g-h&N2jcz+Dci!UCwAn*h&zSOIqQMbf_`+u@ zc!pi|R7Hc%?Un2_j&rXTmEppk4xa>8Q}MyivNWq)*hCJ)OwI`-i}oI8M-2ygNx^#& z&OxJn=*<$F%%s>UE!2*L*ug;bxJ-%+j$A|y&!zgX(%`5)Q*?bkBBS^FPhJS$`8z8# z0&E-w{HcD#aFBtupjP`XGZGX=(4`t!%L}W;`{O|OhwFOp#@ECXqOHMPdjsq}la%75 zLL|KL4LD>QQx-ck>>RSmzy~g{Cz=XXjqCXyKr5-X6Dgh&DhvQxoZ<nVX6!nttEpv;qGwH8yNVXw>-{wD z);wb4?6B;8D33Sa{cX$@Go%0PSC2Gz{aIXP@>ncpW26|-xQ+KSSJ~VTGGg$Dy98%H zn4J&@!KA1_5umeb;5r)X^mL5CF*Zu<<))qw-+&yy)X_Ir-&O4{;zYShNn;8e%6Ti3nbE z-r%&)P9$)gjF@;6E;-51;f-jSL-&~12d}DMEOVy@AzeOjS~g`B2;c(Cm+M~~)HzMo6aA<* zMk5=1-VJ8=Orb>B9vjIyzGdETiJ#BIH4reQHF+w-L>Q*G^P5oHevE% z!At#%q&)^$xpQ=MWiXCc|DPNf^OyzP^axoC0idKx=JxldNZz-MujZ!Sdqm@{jiUJC z|F5`Q0T3jY0P%ZWffh${A8cqav&FJ)8x*$Y5c3BKU9r-Lb}gu9>Tn3Cerddk6g4dH zU-9I}zAQK6_Pw2@HwuKfzi$Taj379P>%j)y&;5-|8*UMwVI;3Q82+oZ^OlHz zs7-o?q}ThW{0Al@qX%u==j~V-(L&mu6$c*sZO!A$_C-Jc>;!cx!Xpco^uEAkBo-;( z96~v;`q8GllEF4q+m2yKXS8Am$_JYQ0-nnCF|qW^xUaUAvIjyXM@s^;e!*_^ z4|A&M>EV?~(O6=!t0g9(E5(&ZGn7jN4@<@Wd2PE-#YrL2!)$b!VOXoN7HSc51`d6#EsrD}RzQPD7e3ZzJE<1~j*@_v4A{GzlxvH$dVchZMTEpkS z&M+l&FR6|gCZ%tpdmBv99|T$rNLf;t?K4=kw01>(_a4Yv3@?q^s>Vf$P4Ljr5cdln zaxzd#EeRo};s!5eDHm3+MS*?WQB`;GJ<`%Nw#=GhJiVq^J}`phdkKfG78d;v3}t5= zA}VvXe+8wH1Liz}=X^2Yl#W|l{`2PlD+GVy?n3S9LRcnLE`pJxI-Q)m8rWXVh(2O$ z=hUlAsa-ewYDO8En3mC_g2yIVe7RGU(dd&svf=_|X>ClJo4egEK7VhkA@HPUEIy&P z&*xJ78oeK$Oi5{y7eE=k`-74!j!XjYPYZLX>c+|XylikU)aR_5dHJP1u3uIW*M=Ks zMqEV*&HsI#^oEc~P%Q%imk$*KJ^P!;4@(2GErLg0!MMWk8+T*D6$q4Ov~Yj;2Tpx< zbT?=IZzT{K{Y3oK%g>{6@EzFk6aLE+FoyB_<&CUygDLR3T6q(j)OmX{>pm8dqd^NY zhrA!mjhrp{(8kYrUrvOy+__O?=eET;o8%}% z1o1`E#^W1;cxOx+8_t^jN+snkXC5djO=P7s&hb z^WLa<7&3NPW=3@oC#0h~ZCH)XLhuksqodZRK?C#(;r#!l#Y@!fughHLsz ztBBgvR*YCfPNUAgiQqv2Oeg|#Y(BeoW$ex-`{HH0eL29G%(=q zXyO~u7jkeH8vI1Ae1-xin7D!Vziu@`D+R*{KjL?|5^lH!s*k5Pu-pTX5|b0H6#nV| EKf1E)umAu6 literal 0 HcmV?d00001 diff --git a/APP_Framework/Applications/app_test/test_hash/test2.png b/APP_Framework/Applications/app_test/test_hash/test2.png new file mode 100644 index 0000000000000000000000000000000000000000..2f06257463be1191a5eb4912b988c15fe39f4989 GIT binary patch literal 16631 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 -#include -#include -#ifdef ADD_XIZI_FETURES -/*定义哈希表所能存储结点个数*/ -#define MAX_SIZE 10000L - -/* 哈希表链节点实现数据结构 */ -/* key 关键字 */ -/* next 该节点指向的下一个节点 */ -struct HashMap { - int key; - struct HashMap *next; -}; - -/* 哈希表节点数组,存储所有节点 */ -struct HashMap *hash_map[MAX_SIZE]; - -/** -* @Description 负责构造哈希链表 -* @param head - 当前哈希链表节点 -* @param key - 需要插入的关键字 -* @return 成功:插入完毕的当前哈希链表节点,失败:插入完毕的当前哈希链表节点 -*/ -struct HashMap *InsertKey(struct HashMap *head, int key) -{ - /* 将关键字组装为待插入的链节点 */ - struct HashMap *insert_node = (struct HashMap *) malloc(sizeof(struct HashMap)); - insert_node->key = key; - - /* 如果节点为空,则直接插入到head后,反之则根据除留余数法移动到合适位置 */ - if (head == NULL) { - head = insert_node; - insert_node->next = NULL; - } else { - /* 用于while查询位置使用的指针 */ - struct HashMap * p1 = head; - struct HashMap * p2 = NULL; - - while ((insert_node->key > p1->key) && (p1->next != NULL)){ - p2 = p1; - p1 = p1->next; - } - - if (insert_node->key <= p1->key) { - /* 插入到第一个节点之前,否则插入到p2指向的节点之后 */ - if (head == p1) - head = insert_node; - else - p2->next = insert_node; - - insert_node->next = p1; - } else{ - /* 插入到结尾处 */ - p1->next = insert_node; - insert_node->next = NULL; - } - } - - return head; -} - -/** -* @Description 接收输入参数,通过循环调用InsertKey函数插入关键字构造哈希表 -* @param size - 要构造的哈希表大小 -* @return 成功:插入完毕的当前哈希链表节点,失败:插入完毕的当前哈希链表节点 -*/ -void CreateHashMap(int size) { - for (int i = 0; i < size; i++) - hash_map[i] = NULL; - - for (int i = 0; i < size; i++) { - int key; - scanf("%d", &key); - /* 吸收回车符 */ - getchar(); - /* 采用除留余数法确定位置 */ - int location = key % (size + 1); - hash_map[location] = InsertKey(hash_map[location], key); - } -} - -/** -* @Description 打印一个哈希表节点 -* @param head - 要打印的哈希表节点 -*/ -void PrintHashMap(struct HashMap *head) -{ - struct HashMap *p = head; - if(head != NULL){ - do{ - printf(" -> %d ",p->key); - p = p->next; - } while(p != NULL); - } else{ - printf("null"); - } -} - -/** -* @Description 测试哈希表 -* @param size - 要构造的哈希表大小 -*/ -void TestHash(void) -{ - int size; - scanf("%d",&size); - getchar(); - CreateHashMap(size); - - printf("采用链地址法得到的哈希表为:\n"); - for (int i = 0; i < size + 1; i++) { - printf("第%d行:", i); - PrintHashMap(hash_map[i]); - printf("\n"); - } - - return ; -} -PRIV_SHELL_CMD_FUNCTION(TestHash, a hash_map test sample, PRIV_SHELL_CMD_MAIN_ATTR); +/* +* Copyright (c) 2020 AIIT Ubiquitous Team +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL +v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +/************************************************* +* @file test_hash.c +* @brief 基于矽璓模拟器cortex-m3-emulator,实现哈希表,支持链地址法解决哈希冲突 +* @description 输入:首先输入关键字数量,然后输入关键字,最后输入需要查询的关键字进行查询。采用除留余数法构造哈希函数,冲突解决采用链地址法。 +* @version 1.0 +* @author 查无此队 +* @date 2023-06-21 +*************************************************/ + + +#include +#include +#include +#ifdef ADD_XIZI_FETURES +/*定义哈希表所能存储结点个数*/ +#define MAX_SIZE 10000L + +/* 哈希表链节点实现数据结构 */ +/* key 关键字 */ +/* next 该节点指向的下一个节点 */ +struct HashMap { + int key; + struct HashMap *next; +}; + +/* 哈希表节点数组,存储所有节点 */ +struct HashMap *hash_map[MAX_SIZE]; + +/** +* @Description 负责构造哈希链表 +* @param head - 当前哈希链表节点 +* @param key - 需要插入的关键字 +* @return 成功:插入完毕的当前哈希链表节点,失败:插入完毕的当前哈希链表节点 +*/ +struct HashMap *InsertKey(struct HashMap *head, int key) +{ + /* 将关键字组装为待插入的链节点 */ + struct HashMap *insert_node = (struct HashMap *) malloc(sizeof(struct HashMap)); + insert_node->key = key; + + /* 如果节点为空,则直接插入到head后,反之则根据除留余数法移动到合适位置 */ + if (head == NULL) { + head = insert_node; + insert_node->next = NULL; + } else { + /* 用于while查询位置使用的指针 */ + struct HashMap * p1 = head; + struct HashMap * p2 = NULL; + + while ((insert_node->key > p1->key) && (p1->next != NULL)){ + p2 = p1; + p1 = p1->next; + } + + if (insert_node->key <= p1->key) { + /* 插入到第一个节点之前,否则插入到p2指向的节点之后 */ + if (head == p1) + head = insert_node; + else + p2->next = insert_node; + + insert_node->next = p1; + } else{ + /* 插入到结尾处 */ + p1->next = insert_node; + insert_node->next = NULL; + } + } + + return head; +} + +/** +* @Description 接收输入参数,通过循环调用InsertKey函数插入关键字构造哈希表 +* @param size - 要构造的哈希表大小 +* @return 成功:插入完毕的当前哈希链表节点,失败:插入完毕的当前哈希链表节点 +*/ +void CreateHashMap(int size) { + for (int i = 0; i < size; i++) + hash_map[i] = NULL; + + for (int i = 0; i < size; i++) { + int key; + scanf("%d", &key); + /* 吸收回车符 */ + getchar(); + /* 采用除留余数法确定位置 */ + int location = key % (size + 1); + hash_map[location] = InsertKey(hash_map[location], key); + } +} + +/** +* @Description 打印一个哈希表节点 +* @param head - 要打印的哈希表节点 +*/ +void PrintHashMap(struct HashMap *head) +{ + struct HashMap *p = head; + if(head != NULL){ + do{ + printf(" -> %d ",p->key); + p = p->next; + } while(p != NULL); + } else{ + printf("null"); + } +} + +/** +* @Description 测试哈希表 +* @param size - 要构造的哈希表大小 +*/ +void TestHash(void) +{ + int size; + scanf("%d",&size); + getchar(); + CreateHashMap(size); + + printf("采用链地址法得到的哈希表为:\n"); + for (int i = 0; i < size + 1; i++) { + printf("第%d行:", i); + PrintHashMap(hash_map[i]); + printf("\n"); + } + + return ; +} +PRIV_SHELL_CMD_FUNCTION(TestHash, a hash_map test sample, PRIV_SHELL_CMD_MAIN_ATTR); #endif \ No newline at end of file