Hàng đợi là như thế nào
Ngăn xếp (Sack) và Hàng đợ (Quu) là ha rong số những cấu rúc ữ lệu cực kỳ quan rọng, được sử ụng hường xuyên rong hế kế huậ oán. Ch́nh máy ́nh cũng sử ụng nhều ứng ụng của ngăn xếp (chẳng hạn như vệc quản lý bộ nhớ rong kh h hành chương r̀nh, hay lưu rữ các lờ gọ đệ quy,...). Về bản chấ, ngăn xếp và hàng đợ cũng gống như mảng, chúng là mộ ập hợp các phần ử cùng kểu ữ lệu, nhưng được lưu rữ có ́nh hứ ự.
Show Trong chuyên đề này, ô s̃ gớ hệu ớ các bạn về hoạ động của ngăn xếp và hàng đợ, cũng như cách cà đặ chúng hậ đơn gản. Ngoà ra, chúng a cũng s̃ cùng xm x́ mộ số bà oán ứng ụng ha cấu rúc ữ lệu này để hểu rõ hơn về cách sử ụng chúng. Để cho đơn gản, a s̃ hống nhấ gọ yp\x{yp}yp là kểu ữ lệu của các phần ử rong ngăn xếp và hàng đợ. Kh cà đặ cụ hể, yp\x{yp}yp có hể là kểu số, kểu chữ hay hậm ch́ là mộ kểu cấu rúc o ngườ ùng ự đ̣nh ngh̃a. II. Ngăn xếp (Sack)1. Khá nệmNgăn xếp là mộ kểu anh sách mà vệc bổ sung mộ phần ử và xóa mộ phần ử được hực hện ở cuố anh sách. Hãy h̀nh ung ngăn xếp gống như mộ chồng đ̃a. Các bạn muốn hêm mộ chếc đ̃a vào h̀ phả đặ nó lên đ̉nh của chồng đ̃a (ph́a cuố), và muốn lấy mộ chếc đ̃a ra h̀ cũng phả lấy ừ rên xuống. Phần ử ở đ̉nh ngăn xếp (cuố anh sách) được gọ là phần ử op của ngăn xếp. Nguyên ắc hêm - xóa phần ử như rên được gọ là "vào sau ra rước", o đó ngăn xếp còn có ên gọ khác là anh sách kểu LIFO (Las In Frs Ou). Có 666 hao ác cơ bản ngăn xếp cung cấp: Có ha cách để bểu ễn ngăn xếp là sử ụng mảng hoặc anh sách lên kế, uy nhên o những ngôn ngữ hện đạ như C++ và Pyhon đã không còn ưu ên sử ụng anh sách lên kế, cũng như đã cà đặ sẵn sack và quu, nên ở đây ô ch̉ phân ́ch sơ qua cách cà đặ bằng mảng để bạn đọc hểu về cơ chế của cấu rúc ữ lệu này. 2. Bểu ễn ngăn xếp bằng mảngĐể bểu ễn ngăn xếp, a sử ụng mộ mảng lmns\x{lmns}lmns để lưu các phần ử của ngăn xếp, phần ử cuố cùng của mảng ch́nh là phần ử op của ngăn xếp. Conanrs Tuy nhên, v̀ Ngôn ngữ C++: Ngôn ngữ Pyhon: 1. Khá nệmGống như ên gọ của m̀nh, hàng đợ là mộ cấu rúc ữ lệu bểu ễn mộ anh sách các phần ử đứng rong "hàng chờ" được xử lý. Trong cấu rúc ữ lệu này, vệc bổ sung mộ phần ử được hực hện ở cuố anh sách, còn vệc loạ bỏ mộ phần ử được hực hện ở đầu anh sách. Có hể ưởng ượng hàng đợ gống như mộ hàng ngườ xếp hàng chờ mua v́, a đến rước được mua rước và rờ khỏ hàng, còn những ngườ đến sau s̃ bổ sung vào cuố hàng. V̀ nguyên ắc "vào rước ra rước" như vậy nên hàng đợ còn được gọ là anh sách kểu FIFO (Frs In Frs Ou). Phần ử ở đầu hàng đợ s̃ gọ là phần ử fron, còn phần ử ở cuố hàng đợ gọ là phần ử rar. Tương ự như ngăn xếp, có 666 hao ác cơ bản rên hàng đợ: 2. Bểu ễn hàng đợ bằng mảngGống như ngăn xếp, a sử ụng mộ mảng lmns\x{lmns}lmns để lưu các phần ử của hàng đợ. Tuy nhên, a phả sử ụng hêm mộ bến fron\x{fron}fron để kểm soá ṿ ŕ của phần ử đầu ên rong hàng đợ, còn phần ử cuố cùng h̀ vẫn là phần ử cuố của Ý ưởng s̃ là, nếu như hêm mộ phần ử vào hàng đợ h̀ đẩy nó vào cuố anh sách lmns,\x{lmns},lmns, còn kh lấy ra mộ phần ử ở đầu hàng đợ h̀ a ăng bến fron\x{fron}fron hêm 111 đơn ṿ, như vậy co như các phần ử ừ ṿ ŕ 000 ớ ṿ ŕ fron−1\x{fron} - 1fron−1 rên mảng là các phần ử đã ḅ loạ đ. Cả ha hành phần rên có hể gộp lạ hành mộ cấu rúc quu_yp\x{quu\_yp}quu_yp rong C++, hoặc mộ class quu_yp\x{quu\_yp}quu_yp rong Pyhon. Ngôn ngữ C++: Ngôn ngữ Pyhon: Trên hực ế, rong các ngôn ngữ lập r̀nh bậc rung và bậc cao đều đã xây ựng sẵn ha cấu rúc ữ lệu ngăn xếp và hàng đợ để ế kệm hờ gan cho lập r̀nh vên. Trong các k̀ h lập r̀nh, hay rong công vệc, chúng a cũng không cần hế phả cà đặ hủ công ha cấu rúc ữ lệu này mà ch̉ cần sử ụng sẵn là được. 1. Trong hư vện STL C++Thư vện mpla chuẩn C++ (STL) cung cấp sẵn ha conanr Các hàm ựng sẵn của ha conanrs này được cho ở bảng ướ đây. Để sử ụng các hàm đó, các bạn sử ụng cú pháp: Ngoà ra rong STL C++ cũng hỗ rợ mộ conanr nữa là Các hàm ựng sẵn hông ụng của conanrs Vblo Algorhm @vblo.algorhm Tho õ 5.6K 428 89 Đã đăng vào hg 9 24, 2021 7:58 SA 13 phú đọc 1.8K 0 2 Ngăn xếp và Hàng đợ (Sack & Quu)I. Lờ mở đầu Ngăn xếp (Sack) và Hàng đợ (Quu) là ha rong số những cấu rúc ữ lệu cực kỳ quan rọng, được sử ụng hường xuyên rong hế kế huậ oán. Ch́nh máy ́nh cũng sử ụng nhều ứng ụng của ngăn xếp (chẳng hạn như vệc quản lý bộ nhớ rong kh h hành chương r̀nh, hay lưu rữ các lờ gọ đệ quy,...). Về bản chấ, ngăn xếp và hàng đợ cũng gống như mảng, chúng là mộ ập hợp các phần ử cùng kểu ữ lệu, nhưng được lưu rữ có ́nh hứ ự. Trong chuyên đề này, ô s̃ gớ hệu ớ các bạn về hoạ động của ngăn xếp và hàng đợ, cũng như cách cà đặ chúng hậ đơn gản. Ngoà ra, chúng a cũng s̃ cùng xm x́ mộ số bà oán ứng ụng ha cấu rúc ữ lệu này để hểu rõ hơn về cách sử ụng chúng. Để cho đơn gản, a s̃ hống nhấ gọ yp\x{yp}yp là kểu ữ lệu của các phần ử rong ngăn xếp và hàng đợ. Kh cà đặ cụ hể, yp\x{yp}yp có hể là kểu số, kểu chữ hay hậm ch́ là mộ kểu cấu rúc o ngườ ùng ự đ̣nh ngh̃a. II. Ngăn xếp (Sack)1. Khá nệmNgăn xếp là mộ kểu anh sách mà vệc bổ sung mộ phần ử và xóa mộ phần ử được hực hện ở cuố anh sách. Hãy h̀nh ung ngăn xếp gống như mộ chồng đ̃a. Các bạn muốn hêm mộ chếc đ̃a vào h̀ phả đặ nó lên đ̉nh của chồng đ̃a (ph́a cuố), và muốn lấy mộ chếc đ̃a ra h̀ cũng phả lấy ừ rên xuống. Phần ử ở đ̉nh ngăn xếp (cuố anh sách) được gọ là phần ử op của ngăn xếp. Nguyên ắc hêm - xóa phần ử như rên được gọ là "vào sau ra rước", o đó ngăn xếp còn có ên gọ khác là anh sách kểu LIFO (Las In Frs Ou). Có 666 hao ác cơ bản ngăn xếp cung cấp: Có ha cách để bểu ễn ngăn xếp là sử ụng mảng hoặc anh sách lên kế, uy nhên o những ngôn ngữ hện đạ như C++ và Pyhon đã không còn ưu ên sử ụng anh sách lên kế, cũng như đã cà đặ sẵn sack và quu, nên ở đây ô ch̉ phân ́ch sơ qua cách cà đặ bằng mảng để bạn đọc hểu về cơ chế của cấu rúc ữ lệu này. 2. Bểu ễn ngăn xếp bằng mảngĐể bểu ễn ngăn xếp, a sử ụng mộ mảng lmns\x{lmns}lmns để lưu các phần ử của ngăn xếp, phần ử cuố cùng của mảng ch́nh là phần ử op của ngăn xếp. Conanrs Tuy nhên, v̀ Ngôn ngữ C++: Ngôn ngữ Pyhon: 1. Khá nệmGống như ên gọ của m̀nh, hàng đợ là mộ cấu rúc ữ lệu bểu ễn mộ anh sách các phần ử đứng rong "hàng chờ" được xử lý. Trong cấu rúc ữ lệu này, vệc bổ sung mộ phần ử được hực hện ở cuố anh sách, còn vệc loạ bỏ mộ phần ử được hực hện ở đầu anh sách. Có hể ưởng ượng hàng đợ gống như mộ hàng ngườ xếp hàng chờ mua v́, a đến rước được mua rước và rờ khỏ hàng, còn những ngườ đến sau s̃ bổ sung vào cuố hàng. V̀ nguyên ắc "vào rước ra rước" như vậy nên hàng đợ còn được gọ là anh sách kểu FIFO (Frs In Frs Ou). Phần ử ở đầu hàng đợ s̃ gọ là phần ử fron, còn phần ử ở cuố hàng đợ gọ là phần ử rar. Tương ự như ngăn xếp, có 666 hao ác cơ bản rên hàng đợ: 2. Bểu ễn hàng đợ bằng mảngGống như ngăn xếp, a sử ụng mộ mảng lmns\x{lmns}lmns để lưu các phần ử của hàng đợ. Tuy nhên, a phả sử ụng hêm mộ bến fron\x{fron}fron để kểm soá ṿ ŕ của phần ử đầu ên rong hàng đợ, còn phần ử cuố cùng h̀ vẫn là phần ử cuố của Ý ưởng s̃ là, nếu như hêm mộ phần ử vào hàng đợ h̀ đẩy nó vào cuố anh sách lmns,\x{lmns},lmns, còn kh lấy ra mộ phần ử ở đầu hàng đợ h̀ a ăng bến fron\x{fron}fron hêm 111 đơn ṿ, như vậy co như các phần ử ừ ṿ ŕ 000 ớ ṿ ŕ fron−1\x{fron} - 1fron−1 rên mảng là các phần ử đã ḅ loạ đ. Cả ha hành phần rên có hể gộp lạ hành mộ cấu rúc quu_yp\x{quu\_yp}quu_yp rong C++, hoặc mộ class quu_yp\x{quu\_yp}quu_yp rong Pyhon. Ngôn ngữ C++: Ngôn ngữ Pyhon: Trên hực ế, rong các ngôn ngữ lập r̀nh bậc rung và bậc cao đều đã xây ựng sẵn ha cấu rúc ữ lệu ngăn xếp và hàng đợ để ế kệm hờ gan cho lập r̀nh vên. Trong các k̀ h lập r̀nh, hay rong công vệc, chúng a cũng không cần hế phả cà đặ hủ công ha cấu rúc ữ lệu này mà ch̉ cần sử ụng sẵn là được. 1. Trong hư vện STL C++Thư vện mpla chuẩn C++ (STL) cung cấp sẵn ha conanr Các hàm ựng sẵn của ha conanrs này được cho ở bảng ướ đây. Để sử ụng các hàm đó, các bạn sử ụng cú pháp: Ngoà ra rong STL C++ cũng hỗ rợ mộ conanr nữa là Các hàm ựng sẵn hông ụng của conanrs 2. Trong PyhonĐố vớ Pyhon, a có khá nhều cách để bểu ễn ha cấu rúc ữ lệu này. Ngăn xếp và hàng đợ được xây ựng sẵn rong 333 class là Nếu như các bạn xây ựng ngăn xếp và hàng đợ bằng class Những phương hức được ựng sẵn hông ụng s̃ mô ả ở bảng ướ đây. Các bạn sử ụng chúng bằng cú pháp: Ngoà ra còn khá nhều phương hức khác của Còn nếu các bạn muốn sử ụng class 1. Kểm ra ngoặc đúngĐề bàCho mộ xâu sss gồm oàn các ấu ngoặc đóng và mở huộc ba loạ: Hãy kểm ra xâu sss có phả là mộ xâu ngoặc đúng hay không? Inpu: Ràng buộc: Oupu: Sampl Inpu 1: Sampl Oupu 1: Sampl Inpu 2: Sampl Oupu 2: Ý ưởngSử ụng 111 sack lưu rữ các ấu ngoặc. Xé kí ự hứ của chuỗ nhập vào: Sau kh uyệ hế xâu, nếu như sack rở hành rỗng hì nghĩa là số lượng ngoặc đóng bằng số lượng ngoặc mở mỗ loạ, lúc này a n ra |