Đăng ký Đăng nhập
Trang chủ Công nghệ thông tin Kỹ thuật lập trình Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây...

Tài liệu Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây

.PDF
35
885
88

Mô tả:

Bài 6: CÁC CẤU TRÚC DỮ LIỆU ĐẶC BIỆT: NGĂN XẾP, HÀNG ĐỢI, CÂY Nhắc lại bài cũ Tìm hiểu các giải thuật sắp xếp cơ bản trên cấu trúc dữ liệu mảng Tìm hiểu các giải thuật tìm kiếm cơ bản trên cấu trúc dữ liệu mảng Đánh giá và so sánh hiệu quả các giải thuật Slide 6 – Ngăn xếp, Hàng đợi và Cây 2 Mục tiêu bài học hôm nay Tìm hiểu 3 cấu trúc dữ liệu đặc biệt: Ngăn xếp (Stack), Hàng đợi (Queue) và Cây (Tree): Khái niệm Cách cài đặt trong VB.Net Các thao tác cơ bản trên các cấu trúc dữ liệu Slide 6 – Ngăn xếp, Hàng đợi và Cây 3 Khái niệm ngăn xếp Ngăn xếp (Stack): Các phần tử được lưu trữ thành một danh sách liên tiếp nhau. Việc thêm hay loại lấy một phần tử ra khỏi danh sách đều được thực hiện ở một đầu gọi là đỉnh của ngăn xếp. Ví dụ: Chồng sách đặt trên bàn Slide 6 – Ngăn xếp, Hàng đợi và Cây 4 Khái niệm ngăn xếp Stack tuân theo cấu trúc: LIFO (Last In – First Out): Phần tử được đưa vào trong ngăn xếp sau cùng sẽ được lấy ra trước tiên. Phần tử đưa vào trong ngăn xếp trước tiên sẽ được lấy ra sau cùng. Slide 6 – Ngăn xếp, Hàng đợi và Cây 5 Các thao tác trên ngăn xếp Có một số thao tác với ngăn xếp hay được thực hiện Thêm (push) một phần tử vào đỉnh ngăn xếp Lấy (pop) một phần tử từ đỉnh của ngăn xếp Xem (peek) nội dung của phần tử ở đỉnh của ngăn xếp Slide 6 – Ngăn xếp, Hàng đợi và Cây 6 Ví dụ Stack S lưu trữ các kí tự Push (S,A) Push (S,B) Push (S,C) Pop (S,C) Pop (S,B) Slide 6 – Ngăn xếp, Hàng đợi và Cây Pop (S,D) Push (S,D) 7 Lớp Stack trong VB.Net Ngăn xếp được cài đặt trong VB.Net bằng lớp Stack Lớp Stack là cài đặt giao diện Icollection Lớp Stack cung cấp các phương thức cho phép thực hiện các thao tác trên ngăn xếp như: Push(), Pop(), Peek(), Contains(), … Slide 6 – Ngăn xếp, Hàng đợi và Cây 8 Khởi tạo ngăn xếp 3 cách khởi tạo: Cách 1: Tạo 1 ngăn xếp rỗng mặc định chứa được 10 giá trị Ví dụ: Dim myStack As New Stack() Cách 2: Tạo 1 ngăn xếp từ 1 đối tượng collection khác Ví dụ: Dim names() As String = {"Raymond", "David“,"Mike"} Dim nameStack As New Stack(names) Cách 3: Tạo 1 ngăn xếp và chỉ định luôn dung lượng ngăn xếp Ví dụ: Dim myStack As New Stack(25) Slide 6 – Ngăn xếp, Hàng đợi và Cây 9 Các phương thức lớp Stack Push(): Thêm một phần tử (Item) vào đỉnh ngăn xếp myStack Cú pháp: myStack.Push(Item) Pop(): Lấy phần tử từ đỉnh ngăn xếp myStack Cú pháp: myStack.Pop() -> trả về phần tử ở đỉnh của ngăn xếp Peek(): Xem nội dung phần tử tại đỉnh ngăn xếp myStack Cú pháp: myStack.Peek() Slide 6 – Ngăn xếp, Hàng đợi và Cây 10 Các phương thức lớp Stack Count(): Trả về số phần tử có trong ngăn xếp myStack Cú pháp: myStack.Count() Clear(): Xóa tất cả các phần tử có trong ngăn xếp myStack Cú pháp: myStack.Clear() Contains(): Kiểm tra xem một phần tử Item nào đó có tồn tại trong ngăn xếp myStack không Cú pháp: myStack.Contains(Item) Slide 6 – Ngăn xếp, Hàng đợi và Cây 11 Các phương thức lớp Stack CopyTo(): copy nội dung của ngăn xếp myStack vào một mảng myArray bắt đầu từ vị trí index Cú pháp: myStack.CopyTo(myArray, index) ToArray(): copy nội dung của ngăn xếp myStack vào một mảng myArray Cú pháp: myArray = myStack.ToArray() Slide 6 – Ngăn xếp, Hàng đợi và Cây 12 Ví dụ sử dụng một số phương thức Imports System.Collections Module Module1 Sub Main() Dim Nums As New Stack() Dim num As Integer Dim x As Integer Dim arrayCopy() As Object Dim myArray() As Object 'Phuong thuc Push() For x = 5 To 20 Step +5 Nums.Push(x) Next ' Phuong thuc Peek() va Pop() If (IsNumeric(Nums.Peek())) Then num = Nums.Pop() Console.WriteLine("Phan tu vua duoc lay ra khoi ngan xep la: " + num) End If Slide 6 – Ngăn xếp, Hàng đợi và Cây 13 Ví dụ sử dụng một số phương thức 'Phuong thuc Contains() If (Nums.Contains(10)) Then Console.WriteLine("Gia tri 10 ton tai trong Stack") End If 'Phuong thuc Count() va Clear() If (Nums.Count() = 0) Then Nums.Clear() End If 'Phuong thuc CopyTo() va ToArray() Nums.CopyTo(arrayCopy, 0) myArray = Nums.ToArray() End Sub End Module Slide 6 – Ngăn xếp, Hàng đợi và Cây 14 Ví dụ ứng dụng Stack Ứng dụng stack để đảo ngược danh sách Giải thuật: 1. Lặp lại n lần 1.1. Nhập vào một giá trị 1.2. Đẩy nó vào stack 2. Lặp khi stack chưa rỗng 2.1. Lấy một giá trị từ stack 2.2. In ra Slide 6 – Ngăn xếp, Hàng đợi và Cây 15 Ví dụ ứng dụng Stack Slide 6 – Ngăn xếp, Hàng đợi và Cây 16 Khái niệm Hàng đợi (Queue) Hàng đợi (Queue): Các phần tử được lưu trữ thành một danh sách liên tiếp nhau. Việc thêm 1 phần tử vào danh sách được thực hiện ở một đầu (cuối hàng) Việc lấy ra 1 phần tử của danh sách được thực hiện ở đầu khác (đầu hàng) Ví dụ: Dòng người xếp hàng chờ trong siêu thị Slide 6 – Ngăn xếp, Hàng đợi và Cây 17 Khái niệm Hàng đợi (Queue) Hàng đợi tuân theo cấu trúc FIFO (First In – First Out): Các phần tử vào trong hàng đợi trước sẽ được lấy ra trước. Lấy ra Thêm vào 3 Slide 6 – Ngăn xếp, Hàng đợi và Cây 2 1 1 18 Các thao tác trên hàng đợi Một số thao tác cơ bản trên queue Bổ sung (enqueue) thêm phần tử vào cuối hàng đợi Lấy (dequeue phần tử ở đầu hàng đợi Xem (peek) nội dung phần tử ở đầu hàng đợi Slide 6 – Ngăn xếp, Hàng đợi và Cây 19 Ví dụ Ví dụ hàng đợi Q lưu trữ các kí tự Bổ sung A, B và C vào cuối hàng đợi Lấy phần tử đầu tiên trong hàng đợi Bổ sung D vào cuối hàng đợi Slide 6 – Ngăn xếp, Hàng đợi và Cây 20
- Xem thêm -

Tài liệu liên quan