{"id":27322,"date":"2025-04-21T13:14:58","date_gmt":"2025-04-21T06:14:58","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=27322"},"modified":"2025-04-21T13:19:24","modified_gmt":"2025-04-21T06:19:24","slug":"stack-la-gi","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/stack-la-gi\/","title":{"rendered":"Stack (Ng\u0103n x\u1ebfp) l\u00e0 g\u00ec? CTDL Stack, Nguy\u00ean t\u1eafc LIFO &#038; V\u00ed d\u1ee5"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed8I DUNG<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Stack-ngan-xep-la-gi\" >Stack (ng\u0103n x\u1ebfp) l\u00e0 g\u00ec?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Vi-du-minh-hoa-de-hieu-Chong-dia-va-nguyen-tac-LIFO\" >V\u00ed d\u1ee5 minh h\u1ecda d\u1ec5 hi\u1ec3u: Ch\u1ed3ng \u0111\u0129a v\u00e0 nguy\u00ean t\u1eafc LIFO<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Nguyen-tac-LIFO-Last-In-First-Out-hoat-dong-nhu-the-nao\" >Nguy\u00ean t\u1eafc LIFO (Last-In, First-Out) ho\u1ea1t \u0111\u1ed9ng nh\u01b0 th\u1ebf n\u00e0o?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Giai-thich-chi-tiet-%E2%80%9CVao-sau-%E2%80%93-Ra-truoc%E2%80%9D\" >Gi\u1ea3i th\u00edch chi ti\u1ebft &#8220;V\u00e0o sau &#8211; Ra tr\u01b0\u1edbc&#8221;<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Cac-thao-tac-Operations-co-ban-tren-Stack\" >C\u00e1c thao t\u00e1c (Operations) c\u01a1 b\u1ea3n tr\u00ean Stack<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#1-Push-Them-phan-tu-vao-dinh-Stack\" >1. Push: Th\u00eam ph\u1ea7n t\u1eed v\u00e0o \u0111\u1ec9nh Stack<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#2-Pop-Lay-va-xoa-phan-tu-khoi-dinh-Stack\" >2. Pop: L\u1ea5y v\u00e0 x\u00f3a ph\u1ea7n t\u1eed kh\u1ecfi \u0111\u1ec9nh Stack<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#3-Peek-hoac-Top-Xem-phan-tu-o-dinh-Stack-khong-xoa\" >3. Peek (ho\u1eb7c Top): Xem ph\u1ea7n t\u1eed \u1edf \u0111\u1ec9nh Stack (kh\u00f4ng x\u00f3a)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Tuy-chon-Cac-thao-tac-khac-isEmpty-isFull-Size\" >(T\u00f9y ch\u1ecdn) C\u00e1c thao t\u00e1c kh\u00e1c: isEmpty, isFull, Size<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Cach-cai-dat-Stack-pho-bien-Stack-Implementation\" >C\u00e1ch c\u00e0i \u0111\u1eb7t Stack ph\u1ed5 bi\u1ebfn (Stack Implementation)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Cai-dat-Stack-bang-mang-Array-based-Stack\" >C\u00e0i \u0111\u1eb7t Stack b\u1eb1ng m\u1ea3ng (Array-based Stack)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Cai-dat-Stack-bang-Danh-sach-lien-ket-Linked-List-based-Stack\" >C\u00e0i \u0111\u1eb7t Stack b\u1eb1ng Danh s\u00e1ch li\u00ean k\u1ebft (Linked List-based Stack)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Lua-chon-cach-cai-dat-nao\" >L\u1ef1a ch\u1ecdn c\u00e1ch c\u00e0i \u0111\u1eb7t n\u00e0o?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Ung-dung-thuc-te-quan-trong-cua-Stack-trong-lap-trinh\" >\u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf quan tr\u1ecdng c\u1ee7a Stack trong l\u1eadp tr\u00ecnh<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Quan-ly-loi-goi-ham-Function-Call-Stack-De-quy-Recursion\" >Qu\u1ea3n l\u00fd l\u1eddi g\u1ecdi h\u00e0m (Function Call Stack) &amp; \u0110\u1ec7 quy (Recursion)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Tinh-nang-Hoan-tacLam-lai-UndoRedo\" >T\u00ednh n\u0103ng Ho\u00e0n t\u00e1c\/L\u00e0m l\u1ea1i (Undo\/Redo)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Kiem-tra-tinh-hop-le-cua-dau-ngoac-Parentheses-Matching\" >Ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7 c\u1ee7a d\u1ea5u ngo\u1eb7c (Parentheses Matching)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Duyet-do-thi-theo-chieu-sau-DFS-%E2%80%93-Depth-First-Search\" >Duy\u1ec7t \u0111\u1ed3 th\u1ecb theo chi\u1ec1u s\u00e2u (DFS &#8211; Depth-First Search)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Danh-gia-bieu-thuc-Infix-to-PostfixPrefix-Conversion-Evaluation\" >\u0110\u00e1nh gi\u00e1 bi\u1ec3u th\u1ee9c (Infix to Postfix\/Prefix Conversion &amp; Evaluation)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Cac-ung-dung-khac%E2%80%A6\" >C\u00e1c \u1ee9ng d\u1ee5ng kh\u00e1c&#8230;<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#So-sanh-Stack-va-Queue-Phan-biet-LIFO-va-FIFO\" >So s\u00e1nh Stack v\u00e0 Queue: Ph\u00e2n bi\u1ec7t LIFO v\u00e0 FIFO<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Diem-giong-nhau\" >\u0110i\u1ec3m gi\u1ed1ng nhau<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Diem-khac-biet-cot-loi-LIFO-vs-FIFO\" >\u0110i\u1ec3m kh\u00e1c bi\u1ec7t c\u1ed1t l\u00f5i (LIFO vs FIFO)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Khi-nao-dung-Stack-khi-nao-dung-Queue\" >Khi n\u00e0o d\u00f9ng Stack, khi n\u00e0o d\u00f9ng Queue?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Loi-thuong-gap-can-biet-Stack-Overflow-la-gi\" >L\u1ed7i th\u01b0\u1eddng g\u1eb7p c\u1ea7n bi\u1ebft: Stack Overflow l\u00e0 g\u00ec?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Nguyen-nhan-gay-ra-loi-Stack-Overflow\" >Nguy\u00ean nh\u00e2n g\u00e2y ra l\u1ed7i Stack Overflow<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Cach-phong-tranh-vi-du-khu-de-quy\" >C\u00e1ch ph\u00f2ng tr\u00e1nh (v\u00ed d\u1ee5: kh\u1eed \u0111\u1ec7 quy)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/#Tong-ket-Nhung-diem-chinh-can-nho-ve-Stack\" >T\u1ed5ng k\u1ebft: Nh\u1eefng \u0111i\u1ec3m ch\u00ednh c\u1ea7n nh\u1edb v\u1ec1 Stack<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>Trong khoa h\u1ecdc m\u00e1y t\u00ednh v\u00e0 <a href=\"https:\/\/interdata.vn\/blog\/lap-trinh-la-gi\/\">l\u1eadp tr\u00ecnh<\/a>, vi\u1ec7c hi\u1ec3u v\u00e0 s\u1eed d\u1ee5ng hi\u1ec7u qu\u1ea3 c\u00e1c <strong><a href=\"https:\/\/interdata.vn\/blog\/cau-truc-du-lieu\/\">c\u1ea5u tr\u00fac d\u1eef li\u1ec7u<\/a> v\u00e0 gi\u1ea3i thu\u1eadt<\/strong>\u00a0l\u00e0 n\u1ec1n t\u1ea3ng c\u1ed1t l\u00f5i. M\u1ed9t trong nh\u1eefng c\u1ea5u tr\u00fac d\u1eef li\u1ec7u c\u01a1 b\u1ea3n nh\u01b0ng c\u1ef1c k\u1ef3 quan tr\u1ecdng \u0111\u00f3 ch\u00ednh l\u00e0 <strong>Stack (Ng\u0103n x\u1ebfp)<\/strong>. D\u00f9 b\u1ea1n l\u00e0 sinh vi\u00ean m\u1edbi b\u1eaft \u0111\u1ea7u hay l\u1eadp tr\u00ecnh vi\u00ean \u0111ang t\u00ecm c\u00e1ch t\u1ed1i \u01b0u code, n\u1eafm v\u1eefng v\u1ec1 Stack l\u00e0 \u0111i\u1ec1u c\u1ea7n thi\u1ebft.<\/p>\n<p>B\u00e0i vi\u1ebft n\u00e0y s\u1ebd \u0111i s\u00e2u gi\u1ea3i th\u00edch <strong>Stack l\u00e0 g\u00ec<\/strong>, nguy\u00ean t\u1eafc ho\u1ea1t \u0111\u1ed9ng <strong>LIFO<\/strong> \u0111\u1eb7c tr\u01b0ng, c\u00e1c thao t\u00e1c c\u01a1 b\u1ea3n, c\u00e1ch tri\u1ec3n khai ph\u1ed5 bi\u1ebfn, nh\u1eefng \u1ee9ng d\u1ee5ng th\u1ef1c t\u1ebf quan tr\u1ecdng v\u00e0 c\u1ea3 nh\u1eefng l\u1ed7i th\u01b0\u1eddng g\u1eb7p. H\u00e3y c\u00f9ng kh\u00e1m ph\u00e1 c\u1ea5u tr\u00fac d\u1eef li\u1ec7u th\u00fa v\u1ecb n\u00e0y nh\u00e9!<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Stack-ngan-xep-la-gi\"><\/span>Stack (ng\u0103n x\u1ebfp) l\u00e0 g\u00ec?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"https:\/\/interdata.vn\/blog\/stack-la-gi\/\">Stack (hay ng\u0103n x\u1ebfp)<\/a> l\u00e0 m\u1ed9t <strong>c\u1ea5u tr\u00fac d\u1eef li\u1ec7u tuy\u1ebfn t\u00ednh<\/strong> c\u01a1 b\u1ea3n trong khoa h\u1ecdc m\u00e1y t\u00ednh. N\u00f3 ho\u1ea1t \u0111\u1ed9ng theo nguy\u00ean t\u1eafc <strong>LIFO (Last-In, First-Out)<\/strong>, ngh\u0129a l\u00e0 ph\u1ea7n t\u1eed n\u00e0o \u0111\u01b0\u1ee3c th\u00eam v\u00e0o (push) sau c\u00f9ng s\u1ebd l\u00e0 ph\u1ea7n t\u1eed \u0111\u1ea7u ti\u00ean \u0111\u01b0\u1ee3c truy c\u1eadp ho\u1eb7c l\u1ea5y ra (pop). Stack l\u01b0u tr\u1eef m\u1ed9t t\u1eadp h\u1ee3p c\u00e1c ph\u1ea7n t\u1eed (elements) theo m\u1ed9t tr\u1eadt t\u1ef1 nh\u1ea5t \u0111\u1ecbnh.<\/p>\n<p>&#8220;Tuy\u1ebfn t\u00ednh&#8221; \u1edf \u0111\u00e2y c\u00f3 ngh\u0129a l\u00e0 c\u00e1c ph\u1ea7n t\u1eed \u0111\u01b0\u1ee3c t\u1ed5 ch\u1ee9c theo m\u1ed9t chu\u1ed7i tu\u1ea7n t\u1ef1, ph\u1ea7n t\u1eed n\u00e0y n\u1ed1i ti\u1ebfp ph\u1ea7n t\u1eed kia. B\u1ea1n c\u00f3 th\u1ec3 h\u00ecnh dung n\u00f3 nh\u01b0 m\u1ed9t con \u0111\u01b0\u1eddng th\u1eb3ng, n\u01a1i b\u1ea1n ch\u1ec9 c\u00f3 th\u1ec3 th\u00eam ho\u1eb7c b\u1edbt c\u00e1c ph\u1ea7n t\u1eed \u1edf m\u1ed9t \u0111\u1ea7u duy nh\u1ea5t, \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 \u0111\u1ec9nh (top) c\u1ee7a stack.<\/p>\n<p>Kh\u00e1i ni\u1ec7m stack r\u1ea5t tr\u1ef1c quan v\u00e0 d\u1ec5 h\u00ecnh dung th\u00f4ng qua c\u00e1c v\u00ed d\u1ee5 \u0111\u1eddi th\u01b0\u1eddng. \u0110i\u1ec1u n\u00e0y gi\u00fap ng\u01b0\u1eddi m\u1edbi b\u1eaft \u0111\u1ea7u d\u1ec5 d\u00e0ng ti\u1ebfp c\u1eadn v\u00e0 hi\u1ec3u \u0111\u01b0\u1ee3c b\u1ea3n ch\u1ea5t c\u1ee7a c\u1ea5u tr\u00fac d\u1eef li\u1ec7u n\u00e0y tr\u01b0\u1edbc khi \u0111i s\u00e2u v\u00e0o c\u00e1c kh\u00eda c\u1ea1nh k\u1ef9 thu\u1eadt ph\u1ee9c t\u1ea1p h\u01a1n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Stack-ngan-xep-la-gi.jpg\" alt=\"Stack (ng\u0103n x\u1ebfp) l\u00e0 g\u00ec\" width=\"750\" height=\"500\" class=\"aligncenter size-full wp-image-27326\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Stack-ngan-xep-la-gi.jpg 750w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Stack-ngan-xep-la-gi-300x200.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Vi-du-minh-hoa-de-hieu-Chong-dia-va-nguyen-tac-LIFO\"><\/span>V\u00ed d\u1ee5 minh h\u1ecda d\u1ec5 hi\u1ec3u: Ch\u1ed3ng \u0111\u0129a v\u00e0 nguy\u00ean t\u1eafc LIFO<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>H\u00e3y t\u01b0\u1edfng t\u01b0\u1ee3ng m\u1ed9t ch\u1ed3ng \u0111\u0129a \u0103n s\u1ea1ch \u0111\u01b0\u1ee3c x\u1ebfp ch\u1ed3ng l\u00ean nhau g\u1ecdn g\u00e0ng tr\u00ean b\u00e0n. Khi b\u1ea1n r\u1eeda xong m\u1ed9t chi\u1ebfc \u0111\u0129a m\u1edbi, b\u1ea1n s\u1ebd \u0111\u1eb7t n\u00f3 l\u00ean <strong>tr\u00ean c\u00f9ng<\/strong> c\u1ee7a ch\u1ed3ng \u0111\u0129a. \u0110\u00e2y ch\u00ednh l\u00e0 h\u00e0nh \u0111\u1ed9ng t\u01b0\u01a1ng t\u1ef1 nh\u01b0 thao t\u00e1c <code>Push<\/code> trong Stack \u2013 th\u00eam m\u1ed9t ph\u1ea7n t\u1eed m\u1edbi v\u00e0o \u0111\u1ec9nh.<\/p>\n<p>Ng\u01b0\u1ee3c l\u1ea1i, khi b\u1ea1n c\u1ea7n l\u1ea5y m\u1ed9t chi\u1ebfc \u0111\u0129a \u0111\u1ec3 s\u1eed d\u1ee5ng, b\u1ea1n c\u0169ng ph\u1ea3i l\u1ea5y chi\u1ebfc \u0111\u0129a \u0111ang n\u1eb1m \u1edf <strong>tr\u00ean c\u00f9ng<\/strong> ra tr\u01b0\u1edbc ti\u00ean. B\u1ea1n kh\u00f4ng th\u1ec3 r\u00fat m\u1ed9t chi\u1ebfc \u0111\u0129a \u1edf gi\u1eefa ch\u1ed3ng \u0111\u0129a ra m\u00e0 kh\u00f4ng l\u00e0m \u0111\u1ed5 c\u1ea3 ch\u1ed3ng. H\u00e0nh \u0111\u1ed9ng n\u00e0y t\u01b0\u01a1ng \u1ee9ng v\u1edbi thao t\u00e1c <code>Pop<\/code> \u2013 l\u1ea5y ph\u1ea7n t\u1eed tr\u00ean c\u00f9ng ra kh\u1ecfi Stack.<\/p>\n<p>V\u00ed d\u1ee5 \u0111\u01a1n gi\u1ea3n n\u00e0y minh h\u1ecda ho\u00e0n h\u1ea3o nguy\u00ean t\u1eafc <strong>LIFO (Last-In, First-Out)<\/strong>. Chi\u1ebfc \u0111\u0129a b\u1ea1n \u0111\u1eb7t l\u00ean sau c\u00f9ng (Last-In) ch\u00ednh l\u00e0 chi\u1ebfc \u0111\u0129a b\u1ea1n ph\u1ea3i l\u1ea5y ra \u0111\u1ea7u ti\u00ean (First-Out). Stack trong l\u1eadp tr\u00ecnh ho\u1ea1t \u0111\u1ed9ng ch\u00ednh x\u00e1c theo logic n\u00e0y.<\/p>\n<p>M\u1ed9t v\u00ed d\u1ee5 kh\u00e1c c\u0169ng r\u1ea5t quen thu\u1ed9c l\u00e0 n\u00fat &#8220;Back&#8221; tr\u00ean tr\u00ecnh duy\u1ec7t web. M\u1ed7i khi b\u1ea1n truy c\u1eadp m\u1ed9t trang m\u1edbi, \u0111\u1ecba ch\u1ec9 trang \u0111\u00f3 \u0111\u01b0\u1ee3c &#8220;\u0111\u1ea9y&#8221; (push) v\u00e0o m\u1ed9t stack l\u1ecbch s\u1eed. Khi b\u1ea1n nh\u1ea5n n\u00fat &#8220;Back&#8221;, trang cu\u1ed1i c\u00f9ng b\u1ea1n truy c\u1eadp (last-in) s\u1ebd \u0111\u01b0\u1ee3c &#8220;l\u1ea5y ra&#8221; (pop) v\u00e0 hi\u1ec3n th\u1ecb (first-out).<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Nguyen-tac-LIFO-Last-In-First-Out-hoat-dong-nhu-the-nao\"><\/span>Nguy\u00ean t\u1eafc LIFO (Last-In, First-Out) ho\u1ea1t \u0111\u1ed9ng nh\u01b0 th\u1ebf n\u00e0o?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>LIFO (Last-In, First-Out)<\/strong> l\u00e0 nguy\u00ean t\u1eafc v\u1eadn h\u00e0nh c\u1ed1t l\u00f5i v\u00e0 \u0111\u1ecbnh ngh\u0129a n\u00ean c\u1ea5u tr\u00fac d\u1eef li\u1ec7u Stack. N\u00f3 m\u00f4 t\u1ea3 th\u1ee9 t\u1ef1 m\u00e0 c\u00e1c ph\u1ea7n t\u1eed \u0111\u01b0\u1ee3c th\u00eam v\u00e0o v\u00e0 l\u1ea5y ra kh\u1ecfi stack. Hi\u1ec3u r\u00f5 LIFO l\u00e0 ch\u00eca kh\u00f3a \u0111\u1ec3 s\u1eed d\u1ee5ng stack m\u1ed9t c\u00e1ch ch\u00ednh x\u00e1c trong c\u00e1c <a href=\"https:\/\/interdata.vn\/blog\/thuat-toan-algorithm\/\">thu\u1eadt to\u00e1n<\/a> v\u00e0 \u1ee9ng d\u1ee5ng.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Giai-thich-chi-tiet-%E2%80%9CVao-sau-%E2%80%93-Ra-truoc%E2%80%9D\"><\/span>Gi\u1ea3i th\u00edch chi ti\u1ebft &#8220;V\u00e0o sau &#8211; Ra tr\u01b0\u1edbc&#8221;<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>C\u1ee5m t\u1eeb &#8220;V\u00e0o sau &#8211; Ra tr\u01b0\u1edbc&#8221; (Last-In, First-Out) c\u00f3 ngh\u0129a l\u00e0 ph\u1ea7n t\u1eed d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c th\u00eam v\u00e0o stack g\u1ea7n \u0111\u00e2y nh\u1ea5t (sau c\u00f9ng) s\u1ebd l\u00e0 ph\u1ea7n t\u1eed \u0111\u1ea7u ti\u00ean \u0111\u01b0\u1ee3c ph\u00e9p l\u1ea5y ra ho\u1eb7c x\u1eed l\u00fd. Gi\u1ed1ng nh\u01b0 ch\u1ed3ng \u0111\u0129a, b\u1ea1n ch\u1ec9 c\u00f3 th\u1ec3 t\u01b0\u01a1ng t\u00e1c v\u1edbi ph\u1ea7n t\u1eed \u1edf tr\u00ean c\u00f9ng (top) c\u1ee7a stack.<\/p>\n<p>Khi m\u1ed9t ph\u1ea7n t\u1eed m\u1edbi \u0111\u01b0\u1ee3c th\u00eam v\u00e0o (Push), n\u00f3 s\u1ebd chi\u1ebfm v\u1ecb tr\u00ed tr\u00ean c\u00f9ng. Khi m\u1ed9t ph\u1ea7n t\u1eed \u0111\u01b0\u1ee3c l\u1ea5y ra (Pop), ch\u00ednh ph\u1ea7n t\u1eed \u1edf tr\u00ean c\u00f9ng \u0111\u00f3 s\u1ebd b\u1ecb lo\u1ea1i b\u1ecf, v\u00e0 ph\u1ea7n t\u1eed n\u1eb1m ngay d\u01b0\u1edbi n\u00f3 (n\u1ebfu c\u00f3) s\u1ebd tr\u1edf th\u00e0nh \u0111\u1ec9nh m\u1edbi c\u1ee7a stack.<\/p>\n<p>Nguy\u00ean t\u1eafc LIFO n\u00e0y l\u00e0m cho Stack tr\u1edf n\u00ean l\u00fd t\u01b0\u1edfng cho c\u00e1c t\u00e1c v\u1ee5 c\u1ea7n \u0111\u1ea3o ng\u01b0\u1ee3c th\u1ee9 t\u1ef1, qu\u1ea3n l\u00fd c\u00e1c tr\u1ea1ng th\u00e1i l\u1ed3ng nhau (nh\u01b0 l\u1eddi g\u1ecdi h\u00e0m), ho\u1eb7c th\u1ef1c hi\u1ec7n c\u00e1c thao t\u00e1c quay lui (backtracking) trong thu\u1eadt to\u00e1n.<\/p>\n<p>\u0110i\u1ec1u n\u00e0y ho\u00e0n to\u00e0n tr\u00e1i ng\u01b0\u1ee3c v\u1edbi c\u1ea5u tr\u00fac d\u1eef li\u1ec7u <strong><a href=\"https:\/\/interdata.vn\/blog\/queue-la-gi\/\">Queue<\/a> (H\u00e0ng \u0111\u1ee3i)<\/strong>, v\u1ed1n ho\u1ea1t \u0111\u1ed9ng theo nguy\u00ean t\u1eafc <strong>FIFO (First-In, First-Out)<\/strong> &#8211; &#8220;V\u00e0o tr\u01b0\u1edbc, Ra tr\u01b0\u1edbc&#8221;. Trong Queue, ph\u1ea7n t\u1eed \u0111\u01b0\u1ee3c th\u00eam v\u00e0o \u0111\u1ea7u ti\u00ean s\u1ebd l\u00e0 ph\u1ea7n t\u1eed \u0111\u01b0\u1ee3c x\u1eed l\u00fd \u0111\u1ea7u ti\u00ean, gi\u1ed1ng nh\u01b0 h\u00e0ng ng\u01b0\u1eddi x\u1ebfp h\u00e0ng ch\u1edd \u0111\u1ee3i.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cac-thao-tac-Operations-co-ban-tren-Stack\"><\/span>C\u00e1c thao t\u00e1c (Operations) c\u01a1 b\u1ea3n tr\u00ean Stack<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0110\u1ec3 t\u01b0\u01a1ng t\u00e1c v\u00e0 qu\u1ea3n l\u00fd d\u1eef li\u1ec7u trong Stack, ch\u00fang ta s\u1eed d\u1ee5ng m\u1ed9t t\u1eadp h\u1ee3p c\u00e1c thao t\u00e1c (operations) c\u01a1 b\u1ea3n. Nh\u1eefng thao t\u00e1c n\u00e0y \u0111\u1ecbnh ngh\u0129a &#8220;giao di\u1ec7n&#8221; c\u1ee7a Stack, cho ph\u00e9p ch\u00fang ta th\u00eam, b\u1edbt, ho\u1eb7c ki\u1ec3m tra c\u00e1c ph\u1ea7n t\u1eed m\u1ed9t c\u00e1ch nh\u1ea5t qu\u00e1n theo nguy\u00ean t\u1eafc LIFO.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Stack-ngan-xep-01.jpg\" alt=\"Stack (ng\u0103n x\u1ebfp) 01\" width=\"750\" height=\"468\" class=\"aligncenter size-full wp-image-27324\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Stack-ngan-xep-01.jpg 750w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Stack-ngan-xep-01-300x187.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"1-Push-Them-phan-tu-vao-dinh-Stack\"><\/span>1. Push: Th\u00eam ph\u1ea7n t\u1eed v\u00e0o \u0111\u1ec9nh Stack<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Thao t\u00e1c <strong>Push<\/strong> \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 <strong>th\u00eam m\u1ed9t ph\u1ea7n t\u1eed m\u1edbi v\u00e0o v\u1ecb tr\u00ed tr\u00ean c\u00f9ng (top) c\u1ee7a stack<\/strong>. Sau khi push, ph\u1ea7n t\u1eed m\u1edbi n\u00e0y s\u1ebd tr\u1edf th\u00e0nh \u0111\u1ec9nh m\u1edbi c\u1ee7a stack. K\u00edch th\u01b0\u1edbc c\u1ee7a stack s\u1ebd t\u0103ng l\u00ean 1 sau m\u1ed7i l\u1ea7n push th\u00e0nh c\u00f4ng.<\/p>\n<p>V\u00ed d\u1ee5, n\u1ebfu stack \u0111ang ch\u1ee9a [A, B] (v\u1edbi B l\u00e0 \u0111\u1ec9nh), sau khi th\u1ef1c hi\u1ec7n <code>Push(C)<\/code>, stack s\u1ebd tr\u1edf th\u00e0nh [A, B, C] (v\u1edbi C l\u00e0 \u0111\u1ec9nh m\u1edbi).<\/p>\n<p>Trong tr\u01b0\u1eddng h\u1ee3p stack \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t b\u1eb1ng m\u1ea3ng c\u00f3 k\u00edch th\u01b0\u1edbc c\u1ed1 \u0111\u1ecbnh, thao t\u00e1c Push c\u00f3 th\u1ec3 th\u1ea5t b\u1ea1i n\u1ebfu stack \u0111\u00e3 \u0111\u1ea7y (tr\u1ea1ng th\u00e1i overflow). C\u1ea7n ki\u1ec3m tra tr\u1ea1ng th\u00e1i <code>isFull<\/code> (n\u1ebfu c\u00f3) tr\u01b0\u1edbc khi th\u1ef1c hi\u1ec7n Push.<\/p>\n<pre><code class=\"language-plaintext\">\/\/ Gi\u1ea3 m\u00e3 cho thao t\u00e1c Push\r\nPROCEDURE Push(stack, element)\r\n  IF IsFull(stack) THEN\r\n    SIGNAL StackOverflowError\r\n  ELSE\r\n    stack.top = stack.top + 1\r\n    stack.data[stack.top] = element\r\n  ENDIF\r\nENDPROCEDURE\r\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"2-Pop-Lay-va-xoa-phan-tu-khoi-dinh-Stack\"><\/span>2. Pop: L\u1ea5y v\u00e0 x\u00f3a ph\u1ea7n t\u1eed kh\u1ecfi \u0111\u1ec9nh Stack<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Thao t\u00e1c <strong>Pop<\/strong> \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 <strong>l\u1ea5y ra v\u00e0 \u0111\u1ed3ng th\u1eddi x\u00f3a b\u1ecf ph\u1ea7n t\u1eed \u0111ang \u1edf v\u1ecb tr\u00ed tr\u00ean c\u00f9ng (top) c\u1ee7a stack<\/strong>. Ph\u1ea7n t\u1eed n\u1eb1m ngay d\u01b0\u1edbi (n\u1ebfu c\u00f3) s\u1ebd tr\u1edf th\u00e0nh \u0111\u1ec9nh m\u1edbi. K\u00edch th\u01b0\u1edbc c\u1ee7a stack s\u1ebd gi\u1ea3m \u0111i 1 sau m\u1ed7i l\u1ea7n pop th\u00e0nh c\u00f4ng.<\/p>\n<p>V\u00ed d\u1ee5, n\u1ebfu stack \u0111ang l\u00e0 [A, B, C] (C l\u00e0 \u0111\u1ec9nh), sau khi th\u1ef1c hi\u1ec7n <code>Pop()<\/code>, stack s\u1ebd tr\u1edf th\u00e0nh [A, B] (B l\u00e0 \u0111\u1ec9nh m\u1edbi) v\u00e0 gi\u00e1 tr\u1ecb C s\u1ebd \u0111\u01b0\u1ee3c tr\u1ea3 v\u1ec1.<\/p>\n<p>N\u1ebfu c\u1ed1 g\u1eafng th\u1ef1c hi\u1ec7n Pop tr\u00ean m\u1ed9t stack r\u1ed7ng, l\u1ed7i <strong>Stack Underflow<\/strong> s\u1ebd x\u1ea3y ra. Do \u0111\u00f3, c\u1ea7n ki\u1ec3m tra tr\u1ea1ng th\u00e1i <code>isEmpty<\/code> tr\u01b0\u1edbc khi th\u1ef1c hi\u1ec7n Pop \u0111\u1ec3 tr\u00e1nh l\u1ed7i n\u00e0y.<\/p>\n<pre><code class=\"language-plaintext\">\/\/ Gi\u1ea3 m\u00e3 cho thao t\u00e1c Pop\r\nFUNCTION Pop(stack) : ElementType\r\n  IF IsEmpty(stack) THEN\r\n    SIGNAL StackUnderflowError\r\n  ELSE\r\n    element = stack.data[stack.top]\r\n    stack.top = stack.top - 1\r\n    RETURN element\r\n  ENDIF\r\nENDFUNCTION\r\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"3-Peek-hoac-Top-Xem-phan-tu-o-dinh-Stack-khong-xoa\"><\/span>3. Peek (ho\u1eb7c Top): Xem ph\u1ea7n t\u1eed \u1edf \u0111\u1ec9nh Stack (kh\u00f4ng x\u00f3a)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Thao t\u00e1c <strong>Peek<\/strong> (\u0111\u00f4i khi c\u00f2n g\u1ecdi l\u00e0 <strong>Top<\/strong>) cho ph\u00e9p ch\u00fang ta <strong>xem gi\u00e1 tr\u1ecb c\u1ee7a ph\u1ea7n t\u1eed \u0111ang \u1edf \u0111\u1ec9nh stack m\u00e0 kh\u00f4ng x\u00f3a b\u1ecf n\u00f3<\/strong>. Thao t\u00e1c n\u00e0y r\u1ea5t h\u1eefu \u00edch khi b\u1ea1n c\u1ea7n bi\u1ebft ph\u1ea7n t\u1eed ti\u1ebfp theo s\u1ebd \u0111\u01b0\u1ee3c x\u1eed l\u00fd l\u00e0 g\u00ec m\u00e0 kh\u00f4ng mu\u1ed1n thay \u0111\u1ed5i tr\u1ea1ng th\u00e1i hi\u1ec7n t\u1ea1i c\u1ee7a stack.<\/p>\n<p>V\u00ed d\u1ee5, n\u1ebfu stack l\u00e0 [A, B, C] (C l\u00e0 \u0111\u1ec9nh), th\u1ef1c hi\u1ec7n <code>Peek()<\/code> s\u1ebd tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb C, nh\u01b0ng stack v\u1eabn gi\u1eef nguy\u00ean l\u00e0 [A, B, C].<\/p>\n<p>T\u01b0\u01a1ng t\u1ef1 nh\u01b0 Pop, vi\u1ec7c th\u1ef1c hi\u1ec7n Peek tr\u00ean stack r\u1ed7ng c\u0169ng s\u1ebd g\u00e2y l\u1ed7i. C\u1ea7n ki\u1ec3m tra <code>isEmpty<\/code> tr\u01b0\u1edbc khi th\u1ef1c hi\u1ec7n Peek.<\/p>\n<pre><code class=\"language-plaintext\">\/\/ Gi\u1ea3 m\u00e3 cho thao t\u00e1c Peek\r\nFUNCTION Peek(stack) : ElementType\r\n  IF IsEmpty(stack) THEN\r\n    SIGNAL StackEmptyError\r\n  ELSE\r\n    RETURN stack.data[stack.top]\r\n  ENDIF\r\nENDFUNCTION\r\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Tuy-chon-Cac-thao-tac-khac-isEmpty-isFull-Size\"><\/span>(T\u00f9y ch\u1ecdn) C\u00e1c thao t\u00e1c kh\u00e1c: isEmpty, isFull, Size<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ngo\u00e0i ba thao t\u00e1c c\u1ed1t l\u00f5i tr\u00ean, Stack th\u01b0\u1eddng c\u00f3 th\u00eam m\u1ed9t s\u1ed1 thao t\u00e1c ph\u1ee5 tr\u1ee3 h\u1eefu \u00edch:<\/p>\n<ul>\n<li><strong>isEmpty():<\/strong> Ki\u1ec3m tra xem stack c\u00f3 r\u1ed7ng hay kh\u00f4ng. Tr\u1ea3 v\u1ec1 <code>true<\/code> n\u1ebfu r\u1ed7ng, <code>false<\/code> n\u1ebfu ng\u01b0\u1ee3c l\u1ea1i. Thao t\u00e1c n\u00e0y c\u1ef1c k\u1ef3 quan tr\u1ecdng \u0111\u1ec3 tr\u00e1nh l\u1ed7i Stack Underflow khi Pop ho\u1eb7c Peek.<\/li>\n<li><strong>isFull():<\/strong> Ki\u1ec3m tra xem stack c\u00f3 \u0111\u1ea7y hay kh\u00f4ng. Thao t\u00e1c n\u00e0y ch\u1ee7 y\u1ebfu li\u00ean quan \u0111\u1ebfn stack c\u00e0i \u0111\u1eb7t b\u1eb1ng m\u1ea3ng c\u00f3 k\u00edch th\u01b0\u1edbc c\u1ed1 \u0111\u1ecbnh. Tr\u1ea3 v\u1ec1 <code>true<\/code> n\u1ebfu \u0111\u1ea7y, <code>false<\/code> n\u1ebfu c\u00f2n ch\u1ed7. Quan tr\u1ecdng \u0111\u1ec3 tr\u00e1nh l\u1ed7i Stack Overflow khi Push.<\/li>\n<li><strong>Size():<\/strong> Tr\u1ea3 v\u1ec1 s\u1ed1 l\u01b0\u1ee3ng ph\u1ea7n t\u1eed hi\u1ec7n c\u00f3 trong stack.<\/li>\n<\/ul>\n<p>C\u00e1c thao t\u00e1c ph\u1ee5 tr\u1ee3 n\u00e0y gi\u00fap vi\u1ec7c qu\u1ea3n l\u00fd v\u00e0 s\u1eed d\u1ee5ng stack tr\u1edf n\u00ean an to\u00e0n v\u00e0 hi\u1ec7u qu\u1ea3 h\u01a1n, \u0111\u1eb7c bi\u1ec7t l\u00e0 trong vi\u1ec7c x\u1eed l\u00fd c\u00e1c tr\u01b0\u1eddng h\u1ee3p bi\u00ean (edge cases).<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cach-cai-dat-Stack-pho-bien-Stack-Implementation\"><\/span>C\u00e1ch c\u00e0i \u0111\u1eb7t Stack ph\u1ed5 bi\u1ebfn (Stack Implementation)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Stack l\u00e0 m\u1ed9t <strong><a href=\"https:\/\/interdata.vn\/blog\/kieu-du-lieu-data-type\/\">Ki\u1ec3u d\u1eef li\u1ec7u<\/a> tr\u1eebu t\u01b0\u1ee3ng (Abstract Data Type &#8211; ADT)<\/strong>. \u0110i\u1ec1u n\u00e0y c\u00f3 ngh\u0129a l\u00e0 ch\u00fang ta \u0111\u1ecbnh ngh\u0129a Stack d\u1ef1a tr\u00ean <strong>h\u00e0nh vi<\/strong> c\u1ee7a n\u00f3 (nguy\u00ean t\u1eafc LIFO v\u00e0 c\u00e1c thao t\u00e1c Push, Pop, Peek) ch\u1ee9 kh\u00f4ng ph\u1ea3i c\u00e1ch n\u00f3 \u0111\u01b0\u1ee3c <strong>l\u01b0u tr\u1eef<\/strong> c\u1ee5 th\u1ec3 trong b\u1ed9 nh\u1edb.<\/p>\n<p>Tuy nhi\u00ean, \u0111\u1ec3 s\u1eed d\u1ee5ng Stack trong l\u1eadp tr\u00ecnh, ch\u00fang ta c\u1ea7n m\u1ed9t c\u1ea5u tr\u00fac d\u1eef li\u1ec7u c\u1ee5 th\u1ec3 b\u00ean d\u01b0\u1edbi \u0111\u1ec3 c\u00e0i \u0111\u1eb7t (implement) n\u00f3. C\u00f3 hai c\u00e1ch c\u00e0i \u0111\u1eb7t Stack ph\u1ed5 bi\u1ebfn nh\u1ea5t l\u00e0 s\u1eed d\u1ee5ng M\u1ea3ng (<a href=\"https:\/\/interdata.vn\/blog\/array-la-gi\/\">Array<\/a>) v\u00e0 Danh s\u00e1ch li\u00ean k\u1ebft (Linked <a href=\"https:\/\/interdata.vn\/blog\/list-trong-python\/\">List<\/a>).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Stack-ngan-xep-02.jpg\" alt=\"Stack (ng\u0103n x\u1ebfp) 02\" width=\"750\" height=\"439\" class=\"aligncenter size-full wp-image-27325\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Stack-ngan-xep-02.jpg 750w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Stack-ngan-xep-02-300x176.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Cai-dat-Stack-bang-mang-Array-based-Stack\"><\/span>C\u00e0i \u0111\u1eb7t Stack b\u1eb1ng m\u1ea3ng (Array-based Stack)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0110\u00e2y l\u00e0 c\u00e1ch c\u00e0i \u0111\u1eb7t \u0111\u01a1n gi\u1ea3n v\u00e0 th\u01b0\u1eddng g\u1eb7p. Ch\u00fang ta s\u1eed d\u1ee5ng m\u1ed9t m\u1ea3ng (th\u01b0\u1eddng l\u00e0 m\u1ea3ng m\u1ed9t chi\u1ec1u) \u0111\u1ec3 l\u01b0u tr\u1eef c\u00e1c ph\u1ea7n t\u1eed c\u1ee7a stack. C\u1ea7n th\u00eam m\u1ed9t <a href=\"https:\/\/interdata.vn\/blog\/bien-la-gi\/\">bi\u1ebfn<\/a>, th\u01b0\u1eddng g\u1ecdi l\u00e0 <code>top<\/code>, \u0111\u1ec3 theo d\u00f5i ch\u1ec9 s\u1ed1 (index) c\u1ee7a ph\u1ea7n t\u1eed n\u1eb1m \u1edf \u0111\u1ec9nh stack.<\/p>\n<ul>\n<li><strong>Kh\u1edfi t\u1ea1o:<\/strong> T\u1ea1o m\u1ed9t m\u1ea3ng v\u1edbi k\u00edch th\u01b0\u1edbc c\u1ed1 \u0111\u1ecbnh (maxSize) v\u00e0 kh\u1edfi t\u1ea1o <code>top = -1<\/code> (bi\u1ec3u th\u1ecb stack r\u1ed7ng).<\/li>\n<li><strong>Push(element):<\/strong> T\u0103ng <code>top<\/code> l\u00ean 1, sau \u0111\u00f3 g\u00e1n <code>element<\/code> v\u00e0o <code>array[top]<\/code>. C\u1ea7n ki\u1ec3m tra <code>isFull<\/code> (khi <code>top == maxSize - 1<\/code>) tr\u01b0\u1edbc khi th\u1ef1c hi\u1ec7n.<\/li>\n<li><strong>Pop():<\/strong> L\u1ea5y gi\u00e1 tr\u1ecb t\u1ea1i <code>array[top]<\/code>, sau \u0111\u00f3 gi\u1ea3m <code>top<\/code> \u0111i 1. C\u1ea7n ki\u1ec3m tra <code>isEmpty<\/code> (khi <code>top == -1<\/code>) tr\u01b0\u1edbc.<\/li>\n<li><strong>Peek():<\/strong> Tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb t\u1ea1i <code>array[top]<\/code>. C\u1ea7n ki\u1ec3m tra <code>isEmpty<\/code>.<\/li>\n<\/ul>\n<h4>\u01afu \u0111i\u1ec3m v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m (Array-based)<\/h4>\n<ul>\n<li><strong>\u01afu \u0111i\u1ec3m:<\/strong>\n<ul>\n<li>C\u00e0i \u0111\u1eb7t t\u01b0\u01a1ng \u0111\u1ed1i \u0111\u01a1n gi\u1ea3n.<\/li>\n<li>Truy c\u1eadp ph\u1ea7n t\u1eed nhanh ch\u00f3ng (O(1)) do t\u00ednh ch\u1ea5t truy c\u1eadp tr\u1ef1c ti\u1ebfp c\u1ee7a m\u1ea3ng.<\/li>\n<li>C\u00f3 th\u1ec3 hi\u1ec7u qu\u1ea3 h\u01a1n v\u1ec1 b\u1ed9 nh\u1edb \u0111\u1ec7m (cache locality) do c\u00e1c ph\u1ea7n t\u1eed n\u1eb1m li\u1ec1n k\u1ec1 nhau.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Nh\u01b0\u1ee3c \u0111i\u1ec3m:<\/strong>\n<ul>\n<li>K\u00edch th\u01b0\u1edbc c\u1ed1 \u0111\u1ecbnh: Ph\u1ea3i x\u00e1c \u0111\u1ecbnh k\u00edch th\u01b0\u1edbc t\u1ed1i \u0111a ngay t\u1eeb \u0111\u1ea7u. N\u1ebfu kh\u00f4ng \u0111\u1ee7 l\u1edbn, s\u1ebd x\u1ea3y ra Stack Overflow. N\u1ebfu qu\u00e1 l\u1edbn, s\u1ebd l\u00e3ng ph\u00ed b\u1ed9 nh\u1edb.<\/li>\n<li>Vi\u1ec7c thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc m\u1ea3ng (resizing) n\u1ebfu c\u1ea7n l\u00e0 m\u1ed9t thao t\u00e1c t\u1ed1n k\u00e9m.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Cai-dat-Stack-bang-Danh-sach-lien-ket-Linked-List-based-Stack\"><\/span>C\u00e0i \u0111\u1eb7t Stack b\u1eb1ng Danh s\u00e1ch li\u00ean k\u1ebft (Linked List-based Stack)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>C\u00e1ch c\u00e0i \u0111\u1eb7t n\u00e0y s\u1eed d\u1ee5ng c\u1ea5u tr\u00fac <strong>Danh s\u00e1ch li\u00ean k\u1ebft \u0111\u01a1n (Singly Linked List)<\/strong>. M\u1ed7i ph\u1ea7n t\u1eed c\u1ee7a stack \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef trong m\u1ed9t <strong>n\u00fat (node)<\/strong>. M\u1ed7i n\u00fat ch\u1ee9a d\u1eef li\u1ec7u c\u1ee7a ph\u1ea7n t\u1eed v\u00e0 m\u1ed9t <strong>con tr\u1ecf (pointer)<\/strong> tr\u1ecf \u0111\u1ebfn n\u00fat ti\u1ebfp theo b\u00ean d\u01b0\u1edbi n\u00f3 trong stack. Bi\u1ebfn <code>top<\/code> s\u1ebd l\u00e0 m\u1ed9t con tr\u1ecf tr\u1ecf \u0111\u1ebfn n\u00fat \u1edf \u0111\u1ec9nh stack.<\/p>\n<ul>\n<li><strong>Kh\u1edfi t\u1ea1o:<\/strong> <code>top = NULL<\/code> (bi\u1ec3u th\u1ecb stack r\u1ed7ng).<\/li>\n<li><strong>Push(element):<\/strong> T\u1ea1o m\u1ed9t n\u00fat m\u1edbi ch\u1ee9a <code>element<\/code>. Cho con tr\u1ecf <code>next<\/code> c\u1ee7a n\u00fat m\u1edbi tr\u1ecf \u0111\u1ebfn n\u00fat <code>top<\/code> hi\u1ec7n t\u1ea1i. C\u1eadp nh\u1eadt <code>top<\/code> \u0111\u1ec3 tr\u1ecf \u0111\u1ebfn n\u00fat m\u1edbi n\u00e0y.<\/li>\n<li><strong>Pop():<\/strong> L\u01b0u l\u1ea1i con tr\u1ecf \u0111\u1ebfn n\u00fat <code>top<\/code> hi\u1ec7n t\u1ea1i (temp). C\u1eadp nh\u1eadt <code>top<\/code> \u0111\u1ec3 tr\u1ecf \u0111\u1ebfn <code>top-&gt;next<\/code>. Tr\u1ea3 v\u1ec1 d\u1eef li\u1ec7u c\u1ee7a n\u00fat <code>temp<\/code> v\u00e0 gi\u1ea3i ph\u00f3ng b\u1ed9 nh\u1edb c\u1ee7a n\u00fat <code>temp<\/code>. C\u1ea7n ki\u1ec3m tra <code>isEmpty<\/code> (<code>top == NULL<\/code>).<\/li>\n<li><strong>Peek():<\/strong> Tr\u1ea3 v\u1ec1 d\u1eef li\u1ec7u c\u1ee7a n\u00fat <code>top<\/code>. C\u1ea7n ki\u1ec3m tra <code>isEmpty<\/code>.<\/li>\n<\/ul>\n<h4>\u01afu \u0111i\u1ec3m v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m (Linked List-based)<\/h4>\n<ul>\n<li><strong>\u01afu \u0111i\u1ec3m:<\/strong>\n<ul>\n<li>K\u00edch th\u01b0\u1edbc \u0111\u1ed9ng: Stack c\u00f3 th\u1ec3 ph\u00e1t tri\u1ec3n ho\u1eb7c thu nh\u1ecf t\u00f9y theo nhu c\u1ea7u, kh\u00f4ng b\u1ecb gi\u1edbi h\u1ea1n k\u00edch th\u01b0\u1edbc c\u1ed1 \u0111\u1ecbnh (ch\u1ec9 gi\u1edbi h\u1ea1n b\u1edfi b\u1ed9 nh\u1edb h\u1ec7 th\u1ed1ng). Kh\u00f4ng x\u1ea3y ra Stack Overflow do h\u1ebft dung l\u01b0\u1ee3ng c\u00e0i \u0111\u1eb7t.<\/li>\n<li>S\u1eed d\u1ee5ng b\u1ed9 nh\u1edb hi\u1ec7u qu\u1ea3 h\u01a1n khi s\u1ed1 l\u01b0\u1ee3ng ph\u1ea7n t\u1eed thay \u0111\u1ed5i nhi\u1ec1u, kh\u00f4ng l\u00e3ng ph\u00ed b\u1ed9 nh\u1edb nh\u01b0 m\u1ea3ng c\u1ed1 \u0111\u1ecbnh.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Nh\u01b0\u1ee3c \u0111i\u1ec3m:<\/strong>\n<ul>\n<li>M\u1ed7i ph\u1ea7n t\u1eed t\u1ed1n th\u00eam b\u1ed9 nh\u1edb \u0111\u1ec3 l\u01b0u con tr\u1ecf <code>next<\/code>.<\/li>\n<li>Truy c\u1eadp c\u00f3 th\u1ec3 ch\u1eadm h\u01a1n m\u1ed9t ch\u00fat so v\u1edbi m\u1ea3ng do c\u00e1c n\u00fat kh\u00f4ng n\u1eb1m li\u1ec1n k\u1ec1 trong b\u1ed9 nh\u1edb (cache locality k\u00e9m h\u01a1n).<\/li>\n<li>C\u00e0i \u0111\u1eb7t c\u00f3 th\u1ec3 ph\u1ee9c t\u1ea1p h\u01a1n m\u1ed9t ch\u00fat so v\u1edbi d\u00f9ng m\u1ea3ng.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Lua-chon-cach-cai-dat-nao\"><\/span>L\u1ef1a ch\u1ecdn c\u00e1ch c\u00e0i \u0111\u1eb7t n\u00e0o?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Vi\u1ec7c l\u1ef1a ch\u1ecdn gi\u1eefa c\u00e0i \u0111\u1eb7t b\u1eb1ng M\u1ea3ng hay Danh s\u00e1ch li\u00ean k\u1ebft ph\u1ee5 thu\u1ed9c v\u00e0o y\u00eau c\u1ea7u c\u1ee5 th\u1ec3 c\u1ee7a b\u00e0i to\u00e1n:<\/p>\n<ul>\n<li>Ch\u1ecdn <strong>M\u1ea3ng<\/strong> khi: B\u1ea1n bi\u1ebft tr\u01b0\u1edbc gi\u1edbi h\u1ea1n s\u1ed1 l\u01b0\u1ee3ng ph\u1ea7n t\u1eed t\u1ed1i \u0111a, ho\u1eb7c khi hi\u1ec7u su\u1ea5t truy c\u1eadp l\u00e0 \u01b0u ti\u00ean h\u00e0ng \u0111\u1ea7u v\u00e0 k\u00edch th\u01b0\u1edbc stack kh\u00f4ng thay \u0111\u1ed5i qu\u00e1 nhi\u1ec1u.<\/li>\n<li>Ch\u1ecdn <strong>Danh s\u00e1ch li\u00ean k\u1ebft<\/strong> khi: B\u1ea1n kh\u00f4ng bi\u1ebft tr\u01b0\u1edbc s\u1ed1 l\u01b0\u1ee3ng ph\u1ea7n t\u1eed, c\u1ea7n s\u1ef1 linh ho\u1ea1t v\u1ec1 k\u00edch th\u01b0\u1edbc, ho\u1eb7c mu\u1ed1n tr\u00e1nh nguy c\u01a1 Stack Overflow do gi\u1edbi h\u1ea1n k\u00edch th\u01b0\u1edbc c\u1ed1 \u0111\u1ecbnh.<\/li>\n<\/ul>\n<p>Trong nhi\u1ec1u th\u01b0 vi\u1ec7n chu\u1ea9n c\u1ee7a c\u00e1c ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh, Stack th\u01b0\u1eddng \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t d\u1ef1a tr\u00ean c\u00e1c c\u1ea5u tr\u00fac d\u1eef li\u1ec7u \u0111\u1ed9ng nh\u01b0 danh s\u00e1ch li\u00ean k\u1ebft ho\u1eb7c m\u1ea3ng \u0111\u1ed9ng (c\u00f3 kh\u1ea3 n\u0103ng t\u1ef1 thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc).<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ung-dung-thuc-te-quan-trong-cua-Stack-trong-lap-trinh\"><\/span>\u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf quan tr\u1ecdng c\u1ee7a Stack trong l\u1eadp tr\u00ecnh<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>M\u1eb7c d\u00f9 l\u00e0 m\u1ed9t c\u1ea5u tr\u00fac d\u1eef li\u1ec7u \u0111\u01a1n gi\u1ea3n, Stack l\u1ea1i c\u00f3 m\u1eb7t trong v\u00f4 s\u1ed1 \u1ee9ng d\u1ee5ng quan tr\u1ecdng v\u00e0 n\u1ec1n t\u1ea3ng c\u1ee7a ng\u00e0nh khoa h\u1ecdc m\u00e1y t\u00ednh v\u00e0 ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m. Hi\u1ec3u c\u00e1c \u1ee9ng d\u1ee5ng n\u00e0y gi\u00fap ch\u00fang ta th\u1ea5y r\u00f5 gi\u00e1 tr\u1ecb v\u00e0 s\u1ee9c m\u1ea1nh c\u1ee7a Stack.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Quan-ly-loi-goi-ham-Function-Call-Stack-De-quy-Recursion\"><\/span>Qu\u1ea3n l\u00fd l\u1eddi g\u1ecdi h\u00e0m (Function Call Stack) &amp; \u0110\u1ec7 quy (Recursion)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0110\u00e2y l\u00e0 m\u1ed9t trong nh\u1eefng \u1ee9ng d\u1ee5ng n\u1ec1n t\u1ea3ng nh\u1ea5t c\u1ee7a Stack. Khi m\u1ed9t h\u00e0m \u0111\u01b0\u1ee3c g\u1ecdi trong ch\u01b0\u01a1ng tr\u00ecnh, th\u00f4ng tin v\u1ec1 l\u1eddi g\u1ecdi h\u00e0m \u0111\u00f3 (nh\u01b0 \u0111\u1ecba ch\u1ec9 tr\u1ea3 v\u1ec1, c\u00e1c <a href=\"https:\/\/interdata.vn\/blog\/tham-so-parameter-la-gi\/\">tham s\u1ed1<\/a>, bi\u1ebfn c\u1ee5c b\u1ed9) \u0111\u01b0\u1ee3c \u0111\u1ea9y (push) v\u00e0o m\u1ed9t v\u00f9ng nh\u1edb \u0111\u1eb7c bi\u1ec7t g\u1ecdi l\u00e0 <strong>Call Stack (Ng\u0103n x\u1ebfp l\u1eddi g\u1ecdi h\u00e0m)<\/strong>.<\/p>\n<p>Khi h\u00e0m con \u0111\u01b0\u1ee3c g\u1ecdi t\u1eeb b\u00ean trong h\u00e0m cha, th\u00f4ng tin c\u1ee7a h\u00e0m con l\u1ea1i \u0111\u01b0\u1ee3c push l\u00ean tr\u00ean \u0111\u1ec9nh Call Stack. Khi m\u1ed9t h\u00e0m th\u1ef1c thi xong, th\u00f4ng tin c\u1ee7a n\u00f3 \u0111\u01b0\u1ee3c l\u1ea5y ra (pop) kh\u1ecfi Call Stack, v\u00e0 ch\u01b0\u01a1ng tr\u00ecnh quay tr\u1edf l\u1ea1i th\u1ef1c thi t\u1ea1i \u0111\u1ecba ch\u1ec9 tr\u1ea3 v\u1ec1 \u0111\u00e3 l\u01b0u.<\/p>\n<p>C\u01a1 ch\u1ebf n\u00e0y ho\u1ea1t \u0111\u1ed9ng ho\u00e0n h\u1ea3o v\u1edbi <strong><a href=\"https:\/\/interdata.vn\/blog\/de-quy-la-gi\/\">\u0110\u1ec7 quy<\/a> (Recursion)<\/strong> &#8211; k\u1ef9 thu\u1eadt m\u1ed9t h\u00e0m t\u1ef1 g\u1ecdi l\u1ea1i ch\u00ednh n\u00f3. M\u1ed7i l\u1ea7n h\u00e0m t\u1ef1 g\u1ecdi, m\u1ed9t frame m\u1edbi l\u1ea1i \u0111\u01b0\u1ee3c push v\u00e0o Call Stack. Stack gi\u00fap qu\u1ea3n l\u00fd th\u1ee9 t\u1ef1 th\u1ef1c thi v\u00e0 tr\u1ea1ng th\u00e1i c\u1ee7a c\u00e1c l\u1eddi g\u1ecdi h\u00e0m l\u1ed3ng nhau n\u00e0y. N\u1ebfu \u0111\u1ec7 quy qu\u00e1 s\u00e2u, Call Stack c\u00f3 th\u1ec3 b\u1ecb \u0111\u1ea7y, g\u00e2y ra l\u1ed7i Stack Overflow.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tinh-nang-Hoan-tacLam-lai-UndoRedo\"><\/span>T\u00ednh n\u0103ng Ho\u00e0n t\u00e1c\/L\u00e0m l\u1ea1i (Undo\/Redo)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Nhi\u1ec1u \u1ee9ng d\u1ee5ng ph\u1ea7n m\u1ec1m (nh\u01b0 tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n, ph\u1ea7n m\u1ec1m \u0111\u1ed3 h\u1ecda) cung c\u1ea5p t\u00ednh n\u0103ng Undo\/Redo. Stack l\u00e0 c\u1ea5u tr\u00fac d\u1eef li\u1ec7u l\u00fd t\u01b0\u1edfng \u0111\u1ec3 c\u00e0i \u0111\u1eb7t t\u00ednh n\u0103ng n\u00e0y.<\/p>\n<p>M\u1ed7i khi ng\u01b0\u1eddi d\u00f9ng th\u1ef1c hi\u1ec7n m\u1ed9t h\u00e0nh \u0111\u1ed9ng (nh\u01b0 g\u00f5 ch\u1eef, x\u00f3a, v\u1ebd h\u00ecnh), tr\u1ea1ng th\u00e1i ho\u1eb7c h\u00e0nh \u0111\u1ed9ng \u0111\u00f3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c push v\u00e0o m\u1ed9t &#8220;Undo Stack&#8221;. Khi ng\u01b0\u1eddi d\u00f9ng nh\u1ea5n Undo, h\u00e0nh \u0111\u1ed9ng tr\u00ean c\u00f9ng c\u1ee7a Undo Stack \u0111\u01b0\u1ee3c pop ra, h\u00e0nh \u0111\u1ed9ng \u0111\u01b0\u1ee3c ho\u00e0n t\u00e1c, v\u00e0 h\u00e0nh \u0111\u1ed9ng \u0111\u00f3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c push v\u00e0o m\u1ed9t &#8220;Redo Stack&#8221;.<\/p>\n<p>Khi ng\u01b0\u1eddi d\u00f9ng nh\u1ea5n Redo, h\u00e0nh \u0111\u1ed9ng tr\u00ean c\u00f9ng c\u1ee7a Redo Stack \u0111\u01b0\u1ee3c pop ra, h\u00e0nh \u0111\u1ed9ng \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n l\u1ea1i, v\u00e0 n\u00f3 l\u1ea1i \u0111\u01b0\u1ee3c push tr\u1edf l\u1ea1i v\u00e0o Undo Stack. Nguy\u00ean t\u1eafc LIFO \u0111\u1ea3m b\u1ea3o c\u00e1c h\u00e0nh \u0111\u1ed9ng \u0111\u01b0\u1ee3c ho\u00e0n t\u00e1c\/l\u00e0m l\u1ea1i theo \u0111\u00fang th\u1ee9 t\u1ef1 ng\u01b0\u1ee3c l\u1ea1i.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kiem-tra-tinh-hop-le-cua-dau-ngoac-Parentheses-Matching\"><\/span>Ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7 c\u1ee7a d\u1ea5u ngo\u1eb7c (Parentheses Matching)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Trong c\u00e1c ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh ho\u1eb7c bi\u1ec3u th\u1ee9c to\u00e1n h\u1ecdc, vi\u1ec7c c\u00e1c c\u1eb7p d\u1ea5u ngo\u1eb7c (nh\u01b0 <code>()<\/code>, <code>[]<\/code>, <code>{}<\/code>) \u0111\u01b0\u1ee3c \u0111\u1eb7t \u0111\u00fang v\u1ecb tr\u00ed v\u00e0 kh\u1edbp v\u1edbi nhau l\u00e0 r\u1ea5t quan tr\u1ecdng. Stack c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng hi\u1ec7u qu\u1ea3 \u0111\u1ec3 ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7 n\u00e0y.<\/p>\n<p>Thu\u1eadt to\u00e1n ho\u1ea1t \u0111\u1ed9ng nh\u01b0 sau: Duy\u1ec7t qua bi\u1ec3u th\u1ee9c t\u1eeb tr\u00e1i sang ph\u1ea3i. N\u1ebfu g\u1eb7p d\u1ea5u ngo\u1eb7c m\u1edf (<code>(<\/code>, <code>[<\/code>, <code>{<\/code>), push n\u00f3 v\u00e0o stack. N\u1ebfu g\u1eb7p d\u1ea5u ngo\u1eb7c \u0111\u00f3ng (<code>)<\/code>, <code>]<\/code>, <code>}<\/code>), ki\u1ec3m tra xem stack c\u00f3 r\u1ed7ng kh\u00f4ng. N\u1ebfu r\u1ed7ng, bi\u1ec3u th\u1ee9c kh\u00f4ng h\u1ee3p l\u1ec7. N\u1ebfu kh\u00f4ng r\u1ed7ng, pop ph\u1ea7n t\u1eed tr\u00ean c\u00f9ng ra v\u00e0 ki\u1ec3m tra xem n\u00f3 c\u00f3 ph\u1ea3i l\u00e0 d\u1ea5u ngo\u1eb7c m\u1edf t\u01b0\u01a1ng \u1ee9ng kh\u00f4ng. N\u1ebfu kh\u00f4ng kh\u1edbp, bi\u1ec3u th\u1ee9c kh\u00f4ng h\u1ee3p l\u1ec7.<\/p>\n<p>Sau khi duy\u1ec7t h\u1ebft bi\u1ec3u th\u1ee9c, n\u1ebfu stack r\u1ed7ng th\u00ec bi\u1ec3u th\u1ee9c h\u1ee3p l\u1ec7, ng\u01b0\u1ee3c l\u1ea1i l\u00e0 kh\u00f4ng h\u1ee3p l\u1ec7. V\u00ed d\u1ee5: <code>{[()]}<\/code>l\u00e0 h\u1ee3p l\u1ec7, trong khi <code>[{)]<\/code> l\u00e0 kh\u00f4ng h\u1ee3p l\u1ec7.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Duyet-do-thi-theo-chieu-sau-DFS-%E2%80%93-Depth-First-Search\"><\/span>Duy\u1ec7t \u0111\u1ed3 th\u1ecb theo chi\u1ec1u s\u00e2u (DFS &#8211; Depth-First Search)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Depth-First Search (DFS)<\/strong> l\u00e0 m\u1ed9t thu\u1eadt to\u00e1n duy\u1ec7t ho\u1eb7c t\u00ecm ki\u1ebfm tr\u00ean c\u1ea5u tr\u00fac d\u1eef li\u1ec7u \u0111\u1ed3 th\u1ecb (Graph) ho\u1eb7c c\u00e2y (<a href=\"https:\/\/interdata.vn\/blog\/cau-truc-du-lieu-tree-cay\/\">Tree<\/a>). T\u01b0 t\u01b0\u1edfng c\u1ee7a DFS l\u00e0 \u0111i s\u00e2u nh\u1ea5t c\u00f3 th\u1ec3 v\u00e0o m\u1ed9t nh\u00e1nh tr\u01b0\u1edbc khi quay lui (backtrack) v\u00e0 kh\u00e1m ph\u00e1 nh\u00e1nh kh\u00e1c.<\/p>\n<p>Stack l\u00e0 c\u00f4ng c\u1ee5 c\u1ed1t l\u00f5i \u0111\u1ec3 c\u00e0i \u0111\u1eb7t DFS m\u1ed9t c\u00e1ch t\u01b0\u1eddng minh (iterative DFS). Thu\u1eadt to\u00e1n b\u1eaft \u0111\u1ea7u b\u1eb1ng c\u00e1ch push n\u00fat g\u1ed1c (start node) v\u00e0o stack. Ch\u1eebng n\u00e0o stack ch\u01b0a r\u1ed7ng, pop m\u1ed9t n\u00fat ra, x\u1eed l\u00fd n\u00f3 (v\u00ed d\u1ee5: \u0111\u00e1nh d\u1ea5u \u0111\u00e3 th\u0103m), sau \u0111\u00f3 push t\u1ea5t c\u1ea3 c\u00e1c n\u00fat h\u00e0ng x\u00f3m ch\u01b0a \u0111\u01b0\u1ee3c th\u0103m c\u1ee7a n\u00f3 v\u00e0o stack. Th\u1ee9 t\u1ef1 LIFO \u0111\u1ea3m b\u1ea3o thu\u1eadt to\u00e1n lu\u00f4n \u01b0u ti\u00ean \u0111i s\u00e2u h\u01a1n.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Danh-gia-bieu-thuc-Infix-to-PostfixPrefix-Conversion-Evaluation\"><\/span>\u0110\u00e1nh gi\u00e1 bi\u1ec3u th\u1ee9c (Infix to Postfix\/Prefix Conversion &amp; Evaluation)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Con ng\u01b0\u1eddi th\u01b0\u1eddng vi\u1ebft bi\u1ec3u th\u1ee9c to\u00e1n h\u1ecdc theo d\u1ea1ng <strong>Infix<\/strong> (to\u00e1n t\u1eed n\u1eb1m gi\u1eefa to\u00e1n h\u1ea1ng, v\u00ed d\u1ee5: <code>a + b<\/code>). Tuy nhi\u00ean, m\u00e1y t\u00ednh th\u01b0\u1eddng x\u1eed l\u00fd hi\u1ec7u qu\u1ea3 h\u01a1n v\u1edbi d\u1ea1ng <strong>Postfix<\/strong> (to\u00e1n t\u1eed \u0111i sau to\u00e1n h\u1ea1ng, v\u00ed d\u1ee5: <code>a b +<\/code>) ho\u1eb7c <strong>Prefix<\/strong> (to\u00e1n t\u1eed \u0111\u1ee9ng tr\u01b0\u1edbc to\u00e1n h\u1ea1ng, v\u00ed d\u1ee5: <code>+ a b<\/code>).<\/p>\n<p>Stack \u0111\u00f3ng vai tr\u00f2 quan tr\u1ecdng trong c\u1ea3 hai qu\u00e1 tr\u00ecnh:<\/p>\n<ol>\n<li><strong>Chuy\u1ec3n \u0111\u1ed5i Infix sang Postfix\/Prefix:<\/strong> Thu\u1eadt to\u00e1n Shunting-yard n\u1ed5i ti\u1ebfng s\u1eed d\u1ee5ng stack \u0111\u1ec3 t\u1ea1m gi\u1eef c\u00e1c to\u00e1n t\u1eed v\u00e0 d\u1ea5u ngo\u1eb7c trong qu\u00e1 tr\u00ecnh qu\u00e9t bi\u1ec3u th\u1ee9c Infix, t\u1eeb \u0111\u00f3 t\u1ea1o ra bi\u1ec3u th\u1ee9c Postfix t\u01b0\u01a1ng \u0111\u01b0\u01a1ng.<\/li>\n<li><strong>\u0110\u00e1nh gi\u00e1 bi\u1ec3u th\u1ee9c Postfix\/Prefix:<\/strong> Stack \u0111\u01b0\u1ee3c d\u00f9ng \u0111\u1ec3 l\u01b0u tr\u1eef c\u00e1c to\u00e1n h\u1ea1ng. Khi g\u1eb7p m\u1ed9t to\u00e1n h\u1ea1ng, push n\u00f3 v\u00e0o stack. Khi g\u1eb7p m\u1ed9t to\u00e1n t\u1eed, pop \u0111\u1ee7 s\u1ed1 l\u01b0\u1ee3ng to\u00e1n h\u1ea1ng c\u1ea7n thi\u1ebft ra kh\u1ecfi stack, th\u1ef1c hi\u1ec7n ph\u00e9p to\u00e1n, r\u1ed3i push k\u1ebft qu\u1ea3 tr\u1edf l\u1ea1i stack. K\u1ebft qu\u1ea3 cu\u1ed1i c\u00f9ng s\u1ebd l\u00e0 gi\u00e1 tr\u1ecb duy nh\u1ea5t c\u00f2n l\u1ea1i trong stack.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Cac-ung-dung-khac%E2%80%A6\"><\/span>C\u00e1c \u1ee9ng d\u1ee5ng kh\u00e1c&#8230;<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ngo\u00e0i c\u00e1c \u1ee9ng d\u1ee5ng n\u1ed5i b\u1eadt tr\u00ean, Stack c\u00f2n \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong nhi\u1ec1u l\u0129nh v\u1ef1c kh\u00e1c nh\u01b0:<\/p>\n<ul>\n<li><strong>Thu\u1eadt to\u00e1n quay lui (Backtracking):<\/strong> L\u01b0u l\u1ea1i c\u00e1c tr\u1ea1ng th\u00e1i ho\u1eb7c l\u1ef1a ch\u1ecdn \u0111\u1ec3 c\u00f3 th\u1ec3 quay l\u1ea1i n\u1ebfu \u0111i v\u00e0o ng\u00f5 c\u1ee5t.<\/li>\n<li><strong>Qu\u1ea3n l\u00fd l\u1ecbch s\u1eed tr\u00ecnh duy\u1ec7t:<\/strong> N\u00fat &#8220;Back&#8221; ho\u1ea1t \u0111\u1ed9ng d\u1ef1a tr\u00ean stack.<\/li>\n<li><strong><a href=\"https:\/\/interdata.vn\/blog\/memory-management-la-gi\/\">Qu\u1ea3n l\u00fd b\u1ed9 nh\u1edb<\/a>:<\/strong> Bi\u1ebfn c\u1ee5c b\u1ed9 c\u1ee7a h\u00e0m th\u01b0\u1eddng \u0111\u01b0\u1ee3c c\u1ea5p ph\u00e1t tr\u00ean Call Stack.<\/li>\n<li><strong>M\u1ed9t s\u1ed1 thu\u1eadt to\u00e1n s\u1eafp x\u1ebfp ho\u1eb7c <a href=\"https:\/\/interdata.vn\/blog\/data-preprocessing-la-gi\/\">x\u1eed l\u00fd d\u1eef li\u1ec7u<\/a> kh\u00e1c.<\/strong><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"So-sanh-Stack-va-Queue-Phan-biet-LIFO-va-FIFO\"><\/span>So s\u00e1nh Stack v\u00e0 Queue: Ph\u00e2n bi\u1ec7t LIFO v\u00e0 FIFO<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Stack v\u00e0 Queue (H\u00e0ng \u0111\u1ee3i) l\u00e0 hai c\u1ea5u tr\u00fac d\u1eef li\u1ec7u tuy\u1ebfn t\u00ednh c\u01a1 b\u1ea3n v\u00e0 th\u01b0\u1eddng \u0111\u01b0\u1ee3c nh\u1eafc \u0111\u1ebfn c\u00f9ng nhau. M\u1eb7c d\u00f9 c\u00f3 m\u1ed9t s\u1ed1 \u0111i\u1ec3m t\u01b0\u01a1ng \u0111\u1ed3ng, ch\u00fang kh\u00e1c bi\u1ec7t ho\u00e0n to\u00e0n v\u1ec1 nguy\u00ean t\u1eafc ho\u1ea1t \u0111\u1ed9ng c\u1ed1t l\u00f5i, d\u1eabn \u0111\u1ebfn c\u00e1c \u1ee9ng d\u1ee5ng kh\u00e1c nhau. Vi\u1ec7c ph\u00e2n bi\u1ec7t r\u00f5 r\u00e0ng gi\u1eefa ch\u00fang l\u00e0 r\u1ea5t quan tr\u1ecdng.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Diem-giong-nhau\"><\/span>\u0110i\u1ec3m gi\u1ed1ng nhau<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>C\u1ea5u tr\u00fac tuy\u1ebfn t\u00ednh:<\/strong> C\u1ea3 hai \u0111\u1ec1u t\u1ed5 ch\u1ee9c d\u1eef li\u1ec7u theo m\u1ed9t chu\u1ed7i tu\u1ea7n t\u1ef1.<\/li>\n<li><strong>Ki\u1ec3u d\u1eef li\u1ec7u tr\u1eebu t\u01b0\u1ee3ng (ADT):<\/strong> C\u1ea3 hai \u0111\u1ec1u \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a b\u1edfi h\u00e0nh vi v\u00e0 c\u00e1c thao t\u00e1c h\u01a1n l\u00e0 c\u00e1ch c\u00e0i \u0111\u1eb7t c\u1ee5 th\u1ec3.<\/li>\n<li><strong>C\u00e1ch c\u00e0i \u0111\u1eb7t:<\/strong> C\u1ea3 Stack v\u00e0 Queue \u0111\u1ec1u c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t b\u1eb1ng M\u1ea3ng ho\u1eb7c Danh s\u00e1ch li\u00ean k\u1ebft.<\/li>\n<li><strong>Thao t\u00e1c c\u01a1 b\u1ea3n:<\/strong> C\u1ea3 hai \u0111\u1ec1u c\u00f3 thao t\u00e1c \u0111\u1ec3 th\u00eam ph\u1ea7n t\u1eed v\u00e0 x\u00f3a ph\u1ea7n t\u1eed.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Diem-khac-biet-cot-loi-LIFO-vs-FIFO\"><\/span>\u0110i\u1ec3m kh\u00e1c bi\u1ec7t c\u1ed1t l\u00f5i (LIFO vs FIFO)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>S\u1ef1 kh\u00e1c bi\u1ec7t c\u0103n b\u1ea3n n\u1eb1m \u1edf <strong>th\u1ee9 t\u1ef1 truy c\u1eadp v\u00e0 x\u00f3a ph\u1ea7n t\u1eed<\/strong>:<\/p>\n<ul>\n<li><strong>Stack:<\/strong> Ho\u1ea1t \u0111\u1ed9ng theo nguy\u00ean t\u1eafc <strong>LIFO (Last-In, First-Out)<\/strong>. Ph\u1ea7n t\u1eed \u0111\u01b0\u1ee3c th\u00eam v\u00e0o sau c\u00f9ng s\u1ebd l\u00e0 ph\u1ea7n t\u1eed \u0111\u01b0\u1ee3c l\u1ea5y ra \u0111\u1ea7u ti\u00ean. Gi\u1ed1ng nh\u01b0 ch\u1ed3ng \u0111\u0129a. Thao t\u00e1c th\u00eam l\u00e0 <code>Push<\/code>, thao t\u00e1c x\u00f3a l\u00e0 <code>Pop<\/code>. Ch\u1ec9 c\u00f3 th\u1ec3 thao t\u00e1c \u1edf m\u1ed9t \u0111\u1ea7u (\u0111\u1ec9nh &#8211; top).<\/li>\n<li><strong>Queue:<\/strong> Ho\u1ea1t \u0111\u1ed9ng theo nguy\u00ean t\u1eafc <strong>FIFO (First-In, First-Out)<\/strong>. Ph\u1ea7n t\u1eed \u0111\u01b0\u1ee3c th\u00eam v\u00e0o \u0111\u1ea7u ti\u00ean s\u1ebd l\u00e0 ph\u1ea7n t\u1eed \u0111\u01b0\u1ee3c l\u1ea5y ra \u0111\u1ea7u ti\u00ean. Gi\u1ed1ng nh\u01b0 h\u00e0ng ng\u01b0\u1eddi x\u1ebfp h\u00e0ng. Thao t\u00e1c th\u00eam th\u01b0\u1eddng g\u1ecdi l\u00e0 <code>Enqueue<\/code> (th\u00eam v\u00e0o cu\u1ed1i &#8211; rear), thao t\u00e1c x\u00f3a l\u00e0 <code>Dequeue<\/code> (x\u00f3a \u1edf \u0111\u1ea7u &#8211; front). Thao t\u00e1c di\u1ec5n ra \u1edf hai \u0111\u1ea7u kh\u00e1c nhau.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Khi-nao-dung-Stack-khi-nao-dung-Queue\"><\/span>Khi n\u00e0o d\u00f9ng Stack, khi n\u00e0o d\u00f9ng Queue?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Vi\u1ec7c l\u1ef1a ch\u1ecdn c\u1ea5u tr\u00fac d\u1eef li\u1ec7u ph\u00f9 h\u1ee3p ph\u1ee5 thu\u1ed9c v\u00e0o y\u00eau c\u1ea7u c\u1ee7a b\u00e0i to\u00e1n v\u1ec1 th\u1ee9 t\u1ef1 x\u1eed l\u00fd d\u1eef li\u1ec7u:<\/p>\n<ul>\n<li><strong>S\u1eed d\u1ee5ng Stack khi:<\/strong>\n<ul>\n<li>C\u1ea7n <strong>\u0111\u1ea3o ng\u01b0\u1ee3c th\u1ee9 t\u1ef1<\/strong> c\u1ee7a d\u1eef li\u1ec7u.<\/li>\n<li>C\u1ea7n x\u1eed l\u00fd c\u00e1c t\u00e1c v\u1ee5 <strong>l\u1ed3ng nhau<\/strong> ho\u1eb7c <strong>\u0111\u1ec7 quy<\/strong> (l\u1eddi g\u1ecdi h\u00e0m, ki\u1ec3m tra ngo\u1eb7c).<\/li>\n<li>C\u1ea7n th\u1ef1c hi\u1ec7n <strong>quay lui (backtracking)<\/strong> trong thu\u1eadt to\u00e1n.<\/li>\n<li>C\u1ea7n m\u00f4 h\u00ecnh h\u00f3a c\u00e1c h\u00e0nh \u0111\u1ed9ng <strong>Undo\/Redo<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<li><strong>S\u1eed d\u1ee5ng Queue khi:<\/strong>\n<ul>\n<li>C\u1ea7n duy tr\u00ec <strong>th\u1ee9 t\u1ef1 ban \u0111\u1ea7u<\/strong> c\u1ee7a d\u1eef li\u1ec7u (ai \u0111\u1ebfn tr\u01b0\u1edbc ph\u1ee5c v\u1ee5 tr\u01b0\u1edbc).<\/li>\n<li>C\u1ea7n x\u1eed l\u00fd c\u00e1c t\u00e1c v\u1ee5 theo <strong>tu\u1ea7n t\u1ef1 \u0111\u1ebfn<\/strong> (requests <a href=\"https:\/\/interdata.vn\/blog\/may-chu-server-la-gi\/\">server<\/a>, h\u00e0ng \u0111\u1ee3i in \u1ea5n).<\/li>\n<li>C\u1ea7n th\u1ef1c hi\u1ec7n duy\u1ec7t \u0111\u1ed3 th\u1ecb theo chi\u1ec1u r\u1ed9ng <strong>(BFS &#8211; Breadth-First Search)<\/strong>.<\/li>\n<li>M\u00f4 h\u00ecnh h\u00f3a <strong>h\u00e0ng \u0111\u1ee3i<\/strong> trong \u0111\u1eddi th\u1ef1c.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Hi\u1ec3u r\u00f5 s\u1ef1 kh\u00e1c bi\u1ec7t LIFO v\u00e0 FIFO gi\u00fap l\u1eadp tr\u00ecnh vi\u00ean l\u1ef1a ch\u1ecdn \u0111\u00fang c\u00f4ng c\u1ee5 cho \u0111\u00fang v\u1ea5n \u0111\u1ec1, d\u1eabn \u0111\u1ebfn code hi\u1ec7u qu\u1ea3 v\u00e0 logic h\u01a1n.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Loi-thuong-gap-can-biet-Stack-Overflow-la-gi\"><\/span>L\u1ed7i th\u01b0\u1eddng g\u1eb7p c\u1ea7n bi\u1ebft: Stack Overflow l\u00e0 g\u00ec?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Stack Overflow Error (L\u1ed7i tr\u00e0n b\u1ed9 nh\u1edb stack)<\/strong> l\u00e0 m\u1ed9t l\u1ed7i runtime kh\u00e1 ph\u1ed5 bi\u1ebfn, x\u1ea3y ra khi m\u1ed9t ch\u01b0\u01a1ng tr\u00ecnh c\u1ed1 g\u1eafng s\u1eed d\u1ee5ng nhi\u1ec1u b\u1ed9 nh\u1edb tr\u00ean <strong>Call Stack<\/strong> h\u01a1n dung l\u01b0\u1ee3ng \u0111\u01b0\u1ee3c c\u1ea5p ph\u00e1t cho n\u00f3. Hi\u1ec3u nguy\u00ean nh\u00e2n v\u00e0 c\u00e1ch ph\u00f2ng tr\u00e1nh l\u1ed7i n\u00e0y l\u00e0 k\u1ef9 n\u0103ng quan tr\u1ecdng.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Nguyen-nhan-gay-ra-loi-Stack-Overflow\"><\/span>Nguy\u00ean nh\u00e2n g\u00e2y ra l\u1ed7i Stack Overflow<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Nguy\u00ean nh\u00e2n ch\u00ednh th\u01b0\u1eddng li\u00ean quan \u0111\u1ebfn vi\u1ec7c Call Stack b\u1ecb l\u1ea5p \u0111\u1ea7y qu\u00e1 nhanh ho\u1eb7c qu\u00e1 s\u00e2u:<\/p>\n<ol>\n<li><strong>\u0110\u1ec7 quy qu\u00e1 s\u00e2u (Excessive Recursion):<\/strong> \u0110\u00e2y l\u00e0 nguy\u00ean nh\u00e2n ph\u1ed5 bi\u1ebfn nh\u1ea5t. N\u1ebfu m\u1ed9t h\u00e0m \u0111\u1ec7 quy t\u1ef1 g\u1ecdi l\u1ea1i ch\u00ednh n\u00f3 qu\u00e1 nhi\u1ec1u l\u1ea7n m\u00e0 kh\u00f4ng \u0111\u1ea1t \u0111\u1ebfn <strong>tr\u01b0\u1eddng h\u1ee3p c\u01a1 s\u1edf (base case)<\/strong> \u0111\u1ec3 d\u1eebng l\u1ea1i, m\u1ed7i l\u1eddi g\u1ecdi h\u00e0m s\u1ebd push m\u1ed9t frame m\u1edbi v\u00e0o Call Stack. Khi Call Stack h\u1ebft ch\u1ed7, l\u1ed7i Stack Overflow x\u1ea3y ra.<\/li>\n<li><strong>\u0110\u1ec7 quy v\u00f4 h\u1ea1n (Infinite Recursion):<\/strong> Tr\u01b0\u1eddng h\u1ee3p h\u00e0m \u0111\u1ec7 quy kh\u00f4ng bao gi\u1edd \u0111\u1ea1t \u0111\u1ebfn \u0111i\u1ec1u ki\u1ec7n d\u1eebng, d\u1eabn \u0111\u1ebfn vi\u1ec7c push v\u00f4 h\u1ea1n v\u00e0o Call Stack.<\/li>\n<li><strong>Bi\u1ebfn c\u1ee5c b\u1ed9 qu\u00e1 l\u1edbn:<\/strong> Khai b\u00e1o c\u00e1c bi\u1ebfn c\u1ee5c b\u1ed9 (local variables) c\u00f3 k\u00edch th\u01b0\u1edbc r\u1ea5t l\u1edbn (v\u00ed d\u1ee5: m\u1ea3ng l\u1edbn) b\u00ean trong h\u00e0m c\u0169ng c\u00f3 th\u1ec3 chi\u1ebfm d\u1ee5ng nhi\u1ec1u kh\u00f4ng gian tr\u00ean Stack Frame, g\u00f3p ph\u1ea7n g\u00e2y tr\u00e0n stack nhanh h\u01a1n, \u0111\u1eb7c bi\u1ec7t khi h\u00e0m \u0111\u00f3 \u0111\u01b0\u1ee3c g\u1ecdi \u0111\u1ec7 quy.<\/li>\n<li><strong>C\u00e0i \u0111\u1eb7t Stack b\u1eb1ng m\u1ea3ng c\u1ed1 \u0111\u1ecbnh b\u1ecb \u0111\u1ea7y:<\/strong> N\u1ebfu b\u1ea1n t\u1ef1 c\u00e0i \u0111\u1eb7t c\u1ea5u tr\u00fac d\u1eef li\u1ec7u Stack b\u1eb1ng m\u1ea3ng c\u00f3 k\u00edch th\u01b0\u1edbc c\u1ed1 \u0111\u1ecbnh v\u00e0 li\u00ean t\u1ee5c th\u1ef1c hi\u1ec7n thao t\u00e1c <code>Push<\/code> v\u01b0\u1ee3t qu\u00e1 k\u00edch th\u01b0\u1edbc \u0111\u00f3 m\u00e0 kh\u00f4ng ki\u1ec3m tra <code>isFull<\/code>.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Cach-phong-tranh-vi-du-khu-de-quy\"><\/span>C\u00e1ch ph\u00f2ng tr\u00e1nh (v\u00ed d\u1ee5: kh\u1eed \u0111\u1ec7 quy)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>\u0110\u1ea3m b\u1ea3o c\u00f3 Base Case:<\/strong> Lu\u00f4n ch\u1eafc ch\u1eafn r\u1eb1ng h\u00e0m \u0111\u1ec7 quy c\u1ee7a b\u1ea1n c\u00f3 m\u1ed9t ho\u1eb7c nhi\u1ec1u tr\u01b0\u1eddng h\u1ee3p c\u01a1 s\u1edf r\u00f5 r\u00e0ng \u0111\u1ec3 d\u1eebng vi\u1ec7c t\u1ef1 g\u1ecdi l\u1ea1i. Ki\u1ec3m tra logic c\u1ea9n th\u1eadn.<\/li>\n<li><strong>Kh\u1eed \u0111\u1ec7 quy (Tail Recursion Optimization \/ Iteration):<\/strong> Chuy\u1ec3n \u0111\u1ed5i thu\u1eadt to\u00e1n \u0111\u1ec7 quy th\u00e0nh d\u1ea1ng <a href=\"https:\/\/interdata.vn\/blog\/vong-lap-la-gi\/\">v\u00f2ng l\u1eb7p<\/a> (iterative). \u0110i\u1ec1u n\u00e0y lo\u1ea1i b\u1ecf vi\u1ec7c s\u1eed d\u1ee5ng Call Stack \u0111\u1ec3 qu\u1ea3n l\u00fd c\u00e1c l\u1eddi g\u1ecdi h\u00e0m l\u1ed3ng nhau. M\u1ed9t s\u1ed1 <a href=\"https:\/\/interdata.vn\/blog\/compiler-trinh-bien-dich-la-gi\/\">tr\u00ecnh bi\u00ean d\u1ecbch<\/a> c\u00f3 th\u1ec3 t\u1ed1i \u01b0u h\u00f3a <strong>\u0111\u1ec7 quy \u0111u\u00f4i (tail recursion)<\/strong>, nh\u01b0ng kh\u00f4ng ph\u1ea3i l\u00fac n\u00e0o c\u0169ng v\u1eady. S\u1eed d\u1ee5ng v\u00f2ng l\u1eb7p v\u00e0 c\u00f3 th\u1ec3 l\u00e0 m\u1ed9t stack d\u1eef li\u1ec7u t\u01b0\u1eddng minh (explicit stack) th\u01b0\u1eddng an to\u00e0n h\u01a1n.<\/li>\n<li><strong>Gi\u1edbi h\u1ea1n \u0111\u1ed9 s\u00e2u \u0111\u1ec7 quy:<\/strong> N\u1ebfu c\u00f3 th\u1ec3, \u0111\u1eb7t ra gi\u1edbi h\u1ea1n cho s\u1ed1 l\u1ea7n g\u1ecdi \u0111\u1ec7 quy.<\/li>\n<li><strong>Tr\u00e1nh bi\u1ebfn c\u1ee5c b\u1ed9 l\u1edbn tr\u00ean Stack:<\/strong> N\u1ebfu c\u1ea7n l\u01b0u tr\u1eef <a href=\"https:\/\/interdata.vn\/blog\/big-data-la-gi\/\">d\u1eef li\u1ec7u l\u1edbn<\/a>, h\u00e3y c\u00e2n nh\u1eafc c\u1ea5p ph\u00e1t b\u1ed9 nh\u1edb tr\u00ean <strong>Heap<\/strong> (v\u00ed d\u1ee5: s\u1eed d\u1ee5ng con tr\u1ecf, c\u1ea5p ph\u00e1t \u0111\u1ed9ng) thay v\u00ec khai b\u00e1o bi\u1ebfn c\u1ee5c b\u1ed9 l\u1edbn tr\u1ef1c ti\u1ebfp tr\u00ean Stack.<\/li>\n<li><strong>Ki\u1ec3m tra khi c\u00e0i \u0111\u1eb7t Stack:<\/strong> N\u1ebfu t\u1ef1 c\u00e0i \u0111\u1eb7t Stack b\u1eb1ng m\u1ea3ng, lu\u00f4n ki\u1ec3m tra <code>isFull<\/code> tr\u01b0\u1edbc khi <code>Push<\/code>. C\u00e2n nh\u1eafc d\u00f9ng c\u00e0i \u0111\u1eb7t b\u1eb1ng danh s\u00e1ch li\u00ean k\u1ebft n\u1ebfu k\u00edch th\u01b0\u1edbc kh\u00f4ng x\u00e1c \u0111\u1ecbnh.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Tong-ket-Nhung-diem-chinh-can-nho-ve-Stack\"><\/span>T\u1ed5ng k\u1ebft: Nh\u1eefng \u0111i\u1ec3m ch\u00ednh c\u1ea7n nh\u1edb v\u1ec1 Stack<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Qua b\u00e0i vi\u1ebft chi ti\u1ebft n\u00e0y, hy v\u1ecdng b\u1ea1n \u0111\u00e3 c\u00f3 c\u00e1i nh\u00ecn to\u00e0n di\u1ec7n v\u00e0 s\u00e2u s\u1eafc v\u1ec1 c\u1ea5u tr\u00fac d\u1eef li\u1ec7u Stack (ng\u0103n x\u1ebfp). \u0110\u00e2y l\u00e0 nh\u1eefng \u0111i\u1ec3m c\u1ed1t l\u00f5i c\u1ea7n ghi nh\u1edb:<\/p>\n<ul>\n<li><strong>Stack l\u00e0 g\u00ec?<\/strong> L\u00e0 c\u1ea5u tr\u00fac d\u1eef li\u1ec7u tuy\u1ebfn t\u00ednh ho\u1ea1t \u0111\u1ed9ng theo nguy\u00ean t\u1eafc <strong>LIFO (Last-In, First-Out)<\/strong> \u2013 v\u00e0o sau, ra tr\u01b0\u1edbc.<\/li>\n<li><strong>Thao t\u00e1c ch\u00ednh:<\/strong> <code>Push<\/code> (th\u00eam v\u00e0o \u0111\u1ec9nh), <code>Pop<\/code> (l\u1ea5y ra kh\u1ecfi \u0111\u1ec9nh), <code>Peek<\/code> (xem \u0111\u1ec9nh).<\/li>\n<li><strong>C\u00e1ch c\u00e0i \u0111\u1eb7t:<\/strong> C\u00f3 th\u1ec3 d\u00f9ng <strong>M\u1ea3ng<\/strong> (\u0111\u01a1n gi\u1ea3n, nhanh, k\u00edch th\u01b0\u1edbc c\u1ed1 \u0111\u1ecbnh) ho\u1eb7c <strong>Danh s\u00e1ch li\u00ean k\u1ebft<\/strong> (linh ho\u1ea1t, k\u00edch th\u01b0\u1edbc \u0111\u1ed9ng).<\/li>\n<li><strong>\u1ee8ng d\u1ee5ng:<\/strong> R\u1ea5t \u0111a d\u1ea1ng, t\u1eeb qu\u1ea3n l\u00fd <strong>l\u1eddi g\u1ecdi h\u00e0m\/\u0111\u1ec7 quy<\/strong>, <strong>Undo\/Redo<\/strong>, <strong>ki\u1ec3m tra ngo\u1eb7c<\/strong>, <strong>DFS<\/strong>, \u0111\u1ebfn <strong>\u0111\u00e1nh gi\u00e1 bi\u1ec3u th\u1ee9c<\/strong>.<\/li>\n<li><strong>Kh\u00e1c bi\u1ec7t v\u1edbi Queue:<\/strong> Stack l\u00e0 LIFO, Queue l\u00e0 <strong>FIFO (First-In, First-Out)<\/strong>.<\/li>\n<li><strong>L\u1ed7i c\u1ea7n tr\u00e1nh:<\/strong> <strong>Stack Overflow<\/strong>, th\u01b0\u1eddng do \u0111\u1ec7 quy qu\u00e1 s\u00e2u ho\u1eb7c v\u00f4 h\u1ea1n.<\/li>\n<\/ul>\n<p>Stack, d\u00f9 \u0111\u01a1n gi\u1ea3n, l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 c\u1ef1c k\u1ef3 m\u1ea1nh m\u1ebd trong b\u1ed9 c\u00f4ng c\u1ee5 c\u1ee7a m\u1ecdi l\u1eadp tr\u00ecnh vi\u00ean. N\u1eafm v\u1eefng kh\u00e1i ni\u1ec7m v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng Stack kh\u00f4ng ch\u1ec9 gi\u00fap gi\u1ea3i quy\u1ebft nhi\u1ec1u b\u00e0i to\u00e1n hi\u1ec7u qu\u1ea3 m\u00e0 c\u00f2n l\u00e0 n\u1ec1n t\u1ea3ng \u0111\u1ec3 hi\u1ec3u s\u00e2u h\u01a1n v\u1ec1 c\u00e1ch m\u00e1y t\u00ednh ho\u1ea1t \u0111\u1ed9ng v\u00e0 qu\u1ea3n l\u00fd b\u1ed9 nh\u1edb.<\/p>\n<div style=\"background-color: #e6f2ff; border-radius: 10px; padding: 20px; margin: 20px 0; border: 1px solid #b3d9ff;\">\n<p><strong>C\u00d3 TH\u1ec2 B\u1ea0N QUAN T\u00c2M<\/strong><\/p>\n<p>Hi\u1ec3u r\u00f5 c\u00e1c c\u1ea5u tr\u00fac d\u1eef li\u1ec7u nh\u01b0 Stack l\u00e0 n\u1ec1n t\u1ea3ng \u0111\u1ec3 x\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng hi\u1ec7u qu\u1ea3. Khi d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n s\u1eb5n s\u00e0ng ho\u1ea1t \u0111\u1ed9ng, vi\u1ec7c l\u1ef1a ch\u1ecdn h\u1ea1 t\u1ea7ng ph\u00f9 h\u1ee3p r\u1ea5t quan tr\u1ecdng. B\u1ea1n c\u00f3 th\u1ec3 b\u1eaft \u0111\u1ea7u v\u1edbi <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/interdata.vn\/thue-hosting\/\">d\u1ecbch v\u1ee5 Web Hosting gi\u00e1 r\u1ebb ch\u1ea5t l\u01b0\u1ee3ng uy t\u00edn<\/a> t\u1ea1i InterData \u0111\u1ec3 c\u00f3 m\u1ed9t kh\u1edfi \u0111\u1ea7u \u1ed5n \u0111\u1ecbnh.<\/p>\n<p>\u0110\u1ed1i v\u1edbi c\u00e1c \u1ee9ng d\u1ee5ng \u0111\u00f2i h\u1ecfi t\u00e0i nguy\u00ean v\u00e0 t\u1ed1c \u0111\u1ed9 cao h\u01a1n, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/interdata.vn\/thue-vps\/\">d\u1ecbch v\u1ee5 VPS Hosting gi\u00e1 r\u1ebb uy t\u00edn t\u1ed1c \u0111\u1ed9 cao<\/a> l\u00e0 l\u1ef1a ch\u1ecdn \u0111\u00e1ng c\u00e2n nh\u1eafc.<\/p>\n<p>N\u1ebfu c\u1ea7n s\u1ef1 linh ho\u1ea1t t\u1ed1i \u0111a v\u00e0 c\u1ea5u h\u00ecnh m\u1ea1nh m\u1ebd cho c\u00e1c h\u1ec7 th\u1ed1ng ph\u1ee9c t\u1ea1p, h\u00e3y kh\u00e1m ph\u00e1 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/interdata.vn\/cloud-server\/\">d\u1ecbch v\u1ee5 Cloud Server ch\u1ea5t l\u01b0\u1ee3ng gi\u00e1 r\u1ebb c\u1ea5u h\u00ecnh cao<\/a>.<\/p>\n<p>T\u1ea5t c\u1ea3 \u0111\u1ec1u \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng tr\u00ean n\u1ec1n t\u1ea3ng ph\u1ea7n c\u1ee9ng chuy\u00ean d\u1ee5ng th\u1ebf h\u1ec7 m\u1edbi nh\u01b0 <a href=\"https:\/\/interdata.vn\/blog\/cpu-amd-epyc\/\">AMD EPYC<\/a> Gen 3th, <a href=\"https:\/\/interdata.vn\/blog\/o-cung-ssd-nvme-la-gi\/\">\u1ed5 c\u1ee9ng SSD NVMe<\/a> U.2 t\u1ed1c \u0111\u1ed9 cao, k\u1ebft h\u1ee3p <a href=\"https:\/\/interdata.vn\/blog\/bang-thong-la-gi\/\">b\u0103ng th\u00f4ng<\/a> l\u1edbn v\u00e0 c\u00f4ng ngh\u1ec7 <a href=\"https:\/\/interdata.vn\/blog\/ao-hoa-la-gi\/\">\u1ea3o h\u00f3a<\/a> ti\u00ean ti\u1ebfn, mang l\u1ea1i tr\u1ea3i nghi\u1ec7m cao c\u1ea5p v\u00e0 \u1ed5n \u0111\u1ecbnh.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Trong khoa h\u1ecdc m\u00e1y t\u00ednh v\u00e0 l\u1eadp tr\u00ecnh, vi\u1ec7c hi\u1ec3u v\u00e0 s\u1eed d\u1ee5ng hi\u1ec7u qu\u1ea3 c\u00e1c c\u1ea5u tr\u00fac d\u1eef li\u1ec7u v\u00e0 gi\u1ea3i thu\u1eadt\u00a0l\u00e0 n\u1ec1n t\u1ea3ng c\u1ed1t l\u00f5i. M\u1ed9t trong nh\u1eefng c\u1ea5u tr\u00fac d\u1eef li\u1ec7u c\u01a1 b\u1ea3n nh\u01b0ng c\u1ef1c k\u1ef3 quan tr\u1ecdng \u0111\u00f3 ch\u00ednh l\u00e0 Stack (Ng\u0103n x\u1ebfp). D\u00f9 b\u1ea1n l\u00e0 sinh vi\u00ean m\u1edbi b\u1eaft \u0111\u1ea7u<\/p>\n","protected":false},"author":2,"featured_media":27326,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[140],"tags":[],"class_list":["post-27322","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-lap-trinh"],"_links":{"self":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/27322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/comments?post=27322"}],"version-history":[{"count":4,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/27322\/revisions"}],"predecessor-version":[{"id":27329,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/27322\/revisions\/27329"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/27326"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=27322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=27322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=27322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}