Hàng đợi và Ngăn xếp Queue and Stack Lé SY Vinh Bộ môn Khoa Học Máy Tính — Khoa CNTT Dai Hoc Cong Nghé - DHQGHN vinhioi@yahoo.com... Là một danh sách nhưng các phép toán chỉ được thự
Trang 1Hàng đợi và Ngăn xếp (Queue and Stack)
Lé SY Vinh
Bộ môn Khoa Học Máy Tính — Khoa CNTT
Dai Hoc Cong Nghé - DHQGHN
vinhioi@yahoo.com
Trang 2Hàng đợi (Queue)
Hang doi la gi?
Là một danh sách nhưng các phép toán chỉ được thực hiện ở hai đỉnh của
danh sách Một đỉnh gọi là đầu hàng, đỉnh còn lại gọi là cuỗi hàng
Vị dụ:
¢ Xép hàng mua vé tàu xe, giao dịch với ngân hàng
Tính chất:
Vào trước ra trước (F1rst In F1rst Out: FIFO)
Trang 3Hàng đợi
Trừu tượng hóa câu trúc hàng đợi
l Mô tả dữ liệu
A4 = (a,y, đ¡, , Ay)
trong đó:
— a„: Phần tử ở đầu của hàng đợi 4
— a„: Phần tử ở cuối của hàng đợi 4
Vi du:
A= (‘Vinh’, ‘Tuan’, ‘Anh’)
trong do:
‘Vinh’: Dau hang doi
‘Anh’: Cudi hang doi
Trang 4Các phép toán trên hàng đợi
empty (A): Kiểm tra hàng đợi có rỗng hay không
length (A): Cho biết số phần tử của hàng đợi
EnQueue (4, x): Thêm phân tử x cuỗi hàng đợi
A4 = (ay, qp , d„) A = (Ag a), ,d,, X)
Vídụ: A=(1,3,5)
EnQueue (4, 4) —> 4= (1, 3, 5, 4)
DeQueue (4): Loại phân tử ở dau hang đợi
A = (ay, qp , d„„, Ay) —> 4= (ap ,d,„)
Vídụ: A=(1,3,5)
DeQueue (4) > A = (3, 5)
GetHead (A): Lay phan ttr 6 dau hang doi
A = (ay Q), , Ap A, — getHead (A) > a,
Vídụ: A=(1,3,5)
getHead (A) > 1
Trang 5Bài tậ
Viết chương trình cài đặt cầu trúc hàng đợi băng mang và danh sách liên
kết
Tính độ phức tạp cho cài đặt ở cau 1
Đọc và cài đặt hàng đợi băng màng tròn
Trang 6Ngan xép (stack)
Ngăn xếp là øì?
Là một danh sách nhưng các phép toán chỉ được thực hiện ở một đỉnh của danh sách
Vị dụ:
— Lây hàng hóa trong kho
— Tim các cặp dâu ngoặc tương ứng
Tính chất:
Vào trước ra sau (First In Last Out: FILO)
Trang 7Ngăn xếp
Trừu tượng hóa cầu trúc ngăn xêp
1 Mô tả dữ liệu
A4 = (a,y, đ¡, , Ay)
trong đó z„ là phân tử ở đỉnh của ngăn xếp 4
Vi du:
4=(1,2,3, 3, 4, 5) — 5: Phân tử ở đỉnh ngăn xếp
A= (‘Vinh’, ‘Tuan’, ‘Anh’?) > Anh: Phan tir 6 dinh ngan xếp
2 Mô tả các phép toán trên cầu trúc ngăn xếp
° - empfy (4): Kiểm tra ngăn xếp có rỗng hay không
° length (4): Cho biết số phân tử của ngăn xếp
Trang 8Ngan xép (stack)
° push (A, x): Thém phan tir x dinh ngan xép
A = (ap, A), , a,) >A = (Ay,Q), ,a,, X)
Vidu: A=(1,3,5)
push (4, 4) > 4 = (1, 3, 5, 4)
° - Pop (4): Loại phân tử ở đỉnh ngăn xếp
A = (Ay đị, , q„, d„) A = (Ay), -,A,_1) Vidu: A=(1,3,5)
pop (4) > 4 = (1, 3)
° GetTop (A): Lay phan tir 6 dinh ngăn xếp
A = (ap, q,, , a„,,,„) —> geflop (4) > a,
Vidu: A=(1,3,5)
getTop (4) > 5
Trang 9Bài tập
Viết chương trình cài đặt cầu trúc ngăn xếp bằng mảng và danh sách liên
kết
Viết chương trình tìm tất cả các cặp dâu ngoặc tương ứng trong một
chương trình C++
Với mỗi phép toán, tính độ phức tạp