From ff7991c82b73e523aabd818953754ad3020e26fe Mon Sep 17 00:00:00 2001 From: Win Date: Fri, 2 May 2025 20:45:54 +0700 Subject: [PATCH] Push C changes --- spring-2025/sen-107/00010/a.out | Bin 0 -> 13024 bytes spring-2025/sen-107/00010/vipTaxi | Bin 0 -> 13024 bytes spring-2025/sen-107/00010/vipTaxi.c | 91 ++++++++++++++++++++++------ 3 files changed, 71 insertions(+), 20 deletions(-) create mode 100755 spring-2025/sen-107/00010/a.out create mode 100755 spring-2025/sen-107/00010/vipTaxi diff --git a/spring-2025/sen-107/00010/a.out b/spring-2025/sen-107/00010/a.out new file mode 100755 index 0000000000000000000000000000000000000000..f5f3d6a56ebfabb2e7611641ffc1eceeb2394412 GIT binary patch literal 13024 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 UU=32*{@FFk9@la9;$X$U0Q0axn*aa+ literal 0 HcmV?d00001 diff --git a/spring-2025/sen-107/00010/vipTaxi b/spring-2025/sen-107/00010/vipTaxi new file mode 100755 index 0000000000000000000000000000000000000000..778511ba48349fb167cd33fe32ebf1f57e0c6d08 GIT binary patch literal 13024 zcmeGiZERcB_1bCLQ2ODf6ap0b7!9P*xK8@9kQR7J>f{CW!=z2=(BRdvoy63!js0Aj zva*bJFcYekO{)+>QzbsiB&1an+PV&rKp|--go==WO`8@C&=RFU_*Axac<0=Ej`RHH zRNIiI{m8Z6JNJB_d+vSD@1FO*>)+JucDV#Mx41w{u-i7=f zC8G@OdN{_(tCX9`YUPLFMjBr?LDoYQ^~$bRdSzav$M7r-h#}_%W5lBZ6C|Nt0GCTl z2!<$&4Iv)-62uVdg-~KZC+PIoM|ypv$511AhU{5XSchEqCs$ap2XmQ~5A+YaantuJTbhFI=WW5Akl~ zkB#J@RX&I~x*aNXU(J9zNAMC5+=!^3_u7<;fBwJ7m24(XEDS$awQBt2}R@j12sX zKKk#w`56dGWEQs@*$+nd!6=4Ge+(4YU8jo5k3WKfFcVsK|2ZR@8OgSf4*0;r=tp1W zaz@raY4qc|aiYIz4p{rb|IUU}fgfyHnE zD9eka`jV4*)j$=QI0mHg9iaGA;xM!HVcoBgno3>uS^w3j@r`$?d0^%MK0f%qMgZ{gBUtHlI`evir|xGZ0fd#8%n> zrXi*M{_|jEU*5_-X{Gd9@Z1J+a^}h+)mNnGDQiU?u}I z8JNkyOa}g6GO#KZ?O3;FRV-W`i^em1tM}Het6sOpn@)IZWr(;j;p0Dvc>xHQ7g2zx zsG@Y-uoRO=-^J+br=jDvvY341H1rJ6H8`B@8$c*#M=TBNO1Je2GeovBDfm}WGc z2-U7O)1hFzQ}hI5u|x={klB!#wt^|k>`UG9Hw(@#d6bA&;PAfp#A8PwrL)8~qP-yT5^*=- znJc0fp`9q;*xp^GONjG8TVjci*yv@FLMNXtJ9FTSbHuI8MyC>nWO;0K-qRza!bZ2( zbu=3tW8zk2qoZ$bJ{uhdmT#CFduvKXf>uO}C&Cf2C86D$iDV)xwP-vYNm*KFDiODY z5$)>MQo;Cc2fZN_iX^Q__!@CLYH989a3s|kOWY^?JxQxqlT`KF?Dl z)7pJet6QrKYsp9=8H;%5ih$%aq*Bp6!5DHX!*fMj#Zuu;i z(*XV)pbqe3fV*fCvF3rzwXaRM_Ig}b&YM$q7N$RNS`k;`_?_#I0AXzhU)qytJgP7{F$T^%nHqu)y<>yJ`OHlAB!M zQt}@Kau~+&AizA|y&u_<|2&X~fRAII;_uG$UkCD~Fy?y;_^~|y9MHRfuiN?eOSZH> z58`?l_&>Ar-A^k4q(Q^Aj5)yZW1Yy|CkBy5=>+I1z~O2wz)=?Si1Mh94X>NRRV&Fe zr`iBYf^GYjOokws(iISU7c%V$-mlMwKL9Zm7 z_Xt-IF1$*f-{Ug>i?4DC6wy42&(Dv(MGBvdOlUgs=PFbjBzQ5w3WD_dk}&lQg~%xF zU-)_IIg;S#T;4-mM)bOJUG|t>MmWcf&wAK+kHP+-BreBun&O9wxWqZH@R%#{7l^N{ z{O`{E-r4DK56$mG1dkAWmf$Z54iS8tAlhkZYO2?&;Hh5W&|x_RQpzlh8^{5k~Ot;b)s!YeJT@=N8?>uS19Dv6^%RUgYkHxBN{KtZn>l0 zxA&Xjb-uOhYBjHSRk}AFjwI8opmMP)*b%LcC#;A!B(??WSBq^;^);fYxxVfKg3X)i zeHUQ2G=PafYyBFr&0p^m(QR-l2q7AeTHsH5p}sUp{Q_C223XNhbt(cC0u`fAbI_z6 z2Tj^@&>;V~CUNh8n}?Q$<*wDin*4Vgv+24nCbNWi42#L|b>BwwT}+1W1v}}UP)tT6 zUqcs&hwU&dW`}tUi^*`TcU&N5j`c2z8Piv+K}un7_esvlL%%Ml3^~7#D4#|iKO1p_ zCC&reTSoK%<%Q|BMCbc5(+%jj#N`5CtYgFYuwf0rg{68r}w1%W%>Iz z)Bg$`%(b)4g@hENUq20fy`;|)56#x4sU#VE66l(!5OtJi_R}(rotPepOQ?e!n z^hTt+-Gc9jEN_tfmy`!tV?t&qWz~2SP_l*pBGU?XA)zDE6^#QC>V?otTalD$^_Zbp zA|6SDWH@1V#S$ICm>ISbsk9l)>=mIz50nX^66p06moPiw55^3pQo&v`61P%Vj1Klh z%y6csrx#Rgn2CQy1)_VRNvtTsUl2qWiHBvt&20^v{ic7*M$;7L#&2zD*xcF#hT#9* z^c$w)8XMb$*|KSCW5XtMYjg89|8{eGL*pjDDNErxm$FsS+ED<{b62n70(zc=3Km2} zf1wq~rZB@XQ~t+8sTm!@f4-TF;+ukwbebZNuLMkU z`{pJ}d4wvya<+u58*?^y*DFwT^Cm(mZ;u&v8CJJwHqG931=@woqvKP*{ zN{|9;E-Aby*BwlE3vakL4mK6EQi`)Dl1fJt@dCsI9t6ql}JKuy_ZN0jjh#qRmdRKnp8n@AN&M+q9F((0dC;rmHw1BNT2Y+rO^W` zUU=y#QThUUJ_+8SWu>AW84IqiuiJ26gL?tE+-0kv`wxGgxt!<>_&&+F7dmk360?cG z_mK_sa)kFyEbr7m6Vj*x!R;gI#%Y`sID|F;78AOwx~ zg$h&kaPA}2;lS~8{)7i9(8v+*3l&kxavvc+_k0O^C)U?UUvubFIP#g;uHOa-?iE>I zCw-mtCrB9ga~LPv;eFkmK*LnAKJQO`i+~92paS_b+OW3{KyWX}`n>;pf%JJF%6?gn zA#NIRZ^=0CFHe)cPR^Y16Ina}9h_p;&+li;m4uH3**`-b{|`vNk>q%PTu1uP+4OM_ z?bQDf(CqU+Qm#vl5z>EKVpAv9XUY@MvFr15B7Z-O&%gHOSk40Dv+H{<(WSVD62H_WNXg&-vS=KOQ*{<|J=^sGduk; z&hSs5yU?be-zV^Q>AUvp&CPeit`D z&{$4kQ~6^%_`Gk|=X%a4=?7SmAnP%7gR)(ppO@=2rQpmr%Gz5Q5YQIK&(E0~G$lnq zA#iq%XFmD&y_3{6~-q=6GOQ+GlM^jo`S&)n{%CHhTxc<293h1)?;x&r0kp)Sh zSU&jPK_UuVt3ZGha5>>6&3Whh2d)dwozhU}!1W5YJB&NRfjvlZ{byDvecZ>{n*$a9 E1jI|T8~^|S literal 0 HcmV?d00001 diff --git a/spring-2025/sen-107/00010/vipTaxi.c b/spring-2025/sen-107/00010/vipTaxi.c index 9c8bdd4..7ffb839 100644 --- a/spring-2025/sen-107/00010/vipTaxi.c +++ b/spring-2025/sen-107/00010/vipTaxi.c @@ -1,7 +1,10 @@ -/* VIP Taxi Queue +/* + * SEN-107:00010 Taxi + Rank Queue Assessment + * Based on VIP Taxi Queue * Template for Fundamental Data Structures, skill 00010. * * Created by Pasin Manurangsi, 2025-01-08 + * Modified by Thanawin Pattanaphol, 2025-03-02 */ #include #include @@ -29,43 +32,77 @@ typedef struct Queue // Queue variable Queue queue = { NULL, NULL }; -// Qeue-related functions +// Queue-related functions void enqueue(int rank, const char* name, int partyCount) { Party* newParty = (Party*)malloc(sizeof(Party)); - if (!newParty) - { - printf("Memory allocation failed!"); - return; - } - strncpy(newParty->name, name, MAX_NAME_LEN - 1); newParty->name[MAX_NAME_LEN - 1] = '\0'; newParty->partyCount = partyCount; newParty->next = NULL; newParty->rank = rank; - print("Create node"); + // If No queue, just insert front if (queue.front == NULL) { - printf("No queue, insert front"); queue.front = newParty; queue.rear = newParty; } - else (newParty->rank > queue.front->rank); + // If new party is higher rank, insert in front of the queue + else if (newParty->rank > queue.front->rank) { - printf("High rank, insert front"); - newParty->next + newParty->next = queue.front; + queue.front = newParty; + } + else + { + Party* currentParty = queue.front; + + while(currentParty->next != NULL) + { + if (newParty->rank > currentParty->next->rank) + { + newParty->next = currentParty->next; + currentParty->next = newParty; + } + } } } +void dequeue() +{ + if (queue.front == NULL) + { + return; + } + + // Store first node and update the front pointer + Party* prevParty = queue.front; + queue.front = queue.front->next; + + // Keep data of front party, and free it. + Party* data = prevParty; + + free(prevParty); + prevParty = NULL; +} + /* Handle an arrival of a taxi. */ void taxiArrival() { - // ************** Please change the code below to your code ************** - printf("Please add your code to handle taxi arrival.\n"); + if (queue.front == NULL) + { + printf("Empty Queue\n"); + return; + } + + Party* party = queue.front; + + printf("Pick up party %s with %d people.\n", party->name, party->partyCount); + + dequeue(); } /* Handles an arrival of a new party. @@ -74,17 +111,31 @@ void taxiArrival() * count - the number of people in the party * name - the name of the party */ -void partyArrival(int rank, int count, char name[]) +void partyArrival(int rank, int partyCount, char name[]) { - // ************** Please change the code below to your code ************** - printf("Please add your code to handle party arrival.\n"); + if (queue.front != NULL && rank < queue.front->rank) + { + printf("Rejected\n"); + } + else + { + printf("Accepted\n"); + enqueue(rank, name, partyCount); + } } /* Free the contents of the datastructures used */ void freeAll() { - // ************** Please change the code below to your code ************** - printf("Please add your code to free all datastructures.\n"); + Party* current = queue.front; + Party* temp; + + while(current != NULL) + { + temp = current->next; + free(current); + current = temp; + } } /* Main function loops for however many timesteps is specified,