1. Trang chủ
  2. » Luận Văn - Báo Cáo

CẤU TRÚC DỮ LIỆUCẤU TRÚC DỮ LIỆU VÀ GIẢITHUẬT

29 172 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 1,2 MB

Nội dung

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Lý thuyết Phần ((Chương g – tiếp) p) Ngăn xếp Hàng đợi „ „ Ngăn xếp Hàng đợi Vũ Anh Dũng - Khoa CNTT Ngăn xếp ADT (Stack ADT) „ „ Ngăn xếp danh sách đặc biệt mà thao tác thêm (insert) loại bỏ (delete) diễn đầu Ví trí phép thêm xóa diễn cuối danh sách gọi top Vũ Anh Dũng - Khoa CNTT Ngăn xếp ADT (Stack ADT) „ Mô hình ngăn xếp : „ „ „ Thêm phần tử : push Loại bỏ pphần tử : ppop p Kiểm tra trả giá trị phần tử : top Vũ Anh Dũng - Khoa CNTT Ngăn xếp ADT (Stack ADT) „ Phép thêm loại bỏ diễn top Vũ Anh Dũng - Khoa CNTT Cài đặt ngăn xếp „ „ Có thể sử dụng list vector Sử dụng list, list vector : „ Thao tác push thực việc chèn hè vào cuối ối danh d h sách h „ Thao tác pop thực cách xóa phần ầ tử cuối ố danh sách „ Thao tác top đơn kiểm tra phần tử cuối danh sách, trả giá trị Vũ Anh Dũng - Khoa CNTT Cài đặt ngăn xếp „ Sử dụng list, vector : „ L.push_back(x); L push back(x); „ L.pop_back(); „ int x= L.back(); Vũ Anh Dũng - Khoa CNTT Cài đặt ngăn xếp „ Sử dụng mảng: „ Dùng thêm biến topOfStack để điều khiển thao tác với ngăn xếp „ topOfStack = -11 ngăn xếp rỗng rỗng Yêu cầu: ầ Sinh viên tự viết ế code cho cài đặt sử dụng list, vector array Vũ Anh Dũng - Khoa CNTT Một số ứng dụng – Cân ký hiệu (Balancing) „ Kiểm tra dấu ngoặc trình kiểm tra lỗi cú pháp „ „ „ „ „ „ Tạo ngăn xếp rỗng Đọc ký tự dấu Nế ký tự Nếu ộ ký hiệu hiệ mở, đặt đặ ó vào ngăn ă xếp ế Nếu ký hiệu đóng, ngăn xếp rỗng thông báo lỗi Ngược lại, lấy khỏi ngăn xếp Nếu ế ký hiệu lấy ấ ký hiệu mở tương ứng, thông báo lỗi Tại vị trí cuối file, ngăn xếp không rỗng thông báo lỗi ỗ Vũ Anh Dũng - Khoa CNTT Một số ứng dụng – Biểu thức hậu tố (Postfix Exp) Xét biểu thức : 99 + 5.99 4.99 99 + 6.99* 99* 1.06 06 = „ Nếu sử dụng máy tính thông thường để bấm kết quảả 19.05 19 05 „ Tuy nhiên, số máy tính thông minh chọn phép nhân ưu tiên trước cho kết ế 18.39 „ Vũ Anh Dũng - Khoa CNTT 10 Một số ứng dụng – Biểu thức hậu tố (Postfix Exp) „ „ Tiếp theo ‘+’ nhìn thấy, 40 ợ lấyy + 40 = 45 ợ đNy y vào đNy N vào Vũ Anh Dũng - Khoa CNTT 15 Một số ứng dụng – Biểu thức hậu tố (Postfix Exp) „ „ ‘+’ lấy 45 đNy vào 45 + = 48 Cuối ố ‘*’ nhìn thấy ấ 48 lấy ra; * 48 = 288 đNy vào Vũ Anh Dũng - Khoa CNTT 16 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ „ „ Sử dụng ngăn xếp để chuyển biểu thức dạng g chuNn ((được ợ gọ gọi theo cách khác trung tố - infix) sang dạng hậu tố - postfix Chúng ta xét toán nhỏ với phép +, *, (, ) Ví dụ : a + b * c + ( d * e + f ) * g Được chuyển thành a b c * + d e * f + g * + Vũ Anh Dũng - Khoa CNTT 17 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ Một số quy tắc : „ Gặp toán hạng : chuyển qua đầu „ Gặp toán tử, dấu mở ngoặc : đưa vào stack „ Toán tử đưa đầu sau xử lý, h dấ ngoặc dấu ặ hì không khô „ Dấu + ưu tiên thấp nhất, ( ưu tiên cao ấ Vũ Anh Dũng - Khoa CNTT 18 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ „ „ Đầu tiên, ký hiệu a đọc, ợ truyền y tới đầu Sau + đọc đặt lên ngăn xếp xếp Tiếp theo b đọc truyền tới đầu ra Vũ Anh Dũng - Khoa CNTT 19 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ Tiếp theo * đọc Mục đỉnh ngăn xếp p toán tử có q quyền y ưu tiên thấp p so với *, đưa * ợ đặt ặ vào ngăn g xếp p Tiếpp theo,, c ợ đọc đưa output Vũ Anh Dũng - Khoa CNTT 20 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ Kí hiệu + Kiểm tra ngăn xếp, chúng g ta thấy y g chúng g ta lấy y * đặt lên đầu ra; lấy + lại, có quyền q y ưu tiên không g thấp p g bằng, g, ngăn xếp; sau đNy + vào stack Vũ Anh Dũng - Khoa CNTT 21 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ Ký hiệu đọc (, có quyền ưu tiên cao nhất,, đặt ặ lên ngăn g xếp p Vũ Anh Dũng - Khoa CNTT 22 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ Bây ta đọc ), ngăn xếp làm rỗng ( ( Chúng ta đưa + Vũ Anh Dũng - Khoa CNTT 23 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ C ối Cuối ù Vũ Anh Dũng - Khoa CNTT 24 Một số ứng dụng – Lời gọi hàm „ „ Các lời gọi hàm sử dụng ngăn xếp Có thể xem ví dụ gọi hàm đệ quy „ „ Hàm tính n! Hàm fibonaci Vũ Anh Dũng - Khoa CNTT 25 Hàng đợi ADT (Queue ADT) „ „ „ Hàng đợi danh sách mà việc chèn thực đầu việc xóa thực đầu lại Thêm phần tử : enqueue, enqueue chèn phần tử vào cuối danh sách (được gọi rear) Xó phần Xóa hầ tử : dnqueue, d ó xóa ó ột phần hầ tử đầu danh sách (được gọi front) Vũ Anh Dũng - Khoa CNTT 26 Mô hình hàng đợi „ Mô hình hàng đợi với phép enqueue dequeue Vũ Anh Dũng - Khoa CNTT 27 Sử dụng mảng cài đặt hàng đợi „ Sử dụng mảng „ Mảng vòng tròn Vũ Anh Dũng - Khoa CNTT 28 Các ứng dụng hàng đợi „ „ „ Điều phối công việc cho máy in Hàng đợi gọi Một số chương trình cần xử lý có hàng đợi víí dụ d : chương h t ì h dự trình d đoán đ qua SMS Vũ Anh Dũng - Khoa CNTT 29 [...]... vậy 3 và 2 được lấy ra từ ngăn xếp và tổng của chúng, 5, được đNy vào Vũ Anh Dũng - Khoa CNTT 13 Một số ứng dụng – Biểu thức hậu tố (Postfix Exp) „ „ Tiếp theo 8 được đNy vào Bây giờ ‘*’ được nhìn thấy, do vậy 8 và 5 được lấy ấ ra và 5 * 8 = 40 được đNy N vào Vũ Anh Dũng - Khoa CNTT 14 Một số ứng dụng – Biểu thức hậu tố (Postfix Exp) „ „ Tiếp theo ‘+’ được nhìn thấy, do vậy 40 và 5 được ợ lấyy ra và 5... Tiếp theo ‘+’ được nhìn thấy, do vậy 40 và 5 được ợ lấyy ra và 5 + 40 = 45 được ợ đNy y vào 3 được đNy N vào Vũ Anh Dũng - Khoa CNTT 15 Một số ứng dụng – Biểu thức hậu tố (Postfix Exp) „ „ ‘+’ tiếp theo lấy ra 3 và 45 và đNy vào 45 + 3 = 48 Cuối ố cùng ‘*’ được nhìn thấy ấ và 48 và 6 được lấy ra; 6 * 48 = 288 được đNy vào Vũ Anh Dũng - Khoa CNTT 16 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ „ „... được đưa ra và * ợ đặt ặ vào ngăn g xếp p Tiếpp theo,, c được ợ được đọc và đưa ra output Vũ Anh Dũng - Khoa CNTT 20 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ Kí hiệu tiếp theo là + Kiểm tra ngăn xếp, chúng g ta thấy y rằng g chúng g ta sẽ lấy y ra * và đặt nó lên đầu ra; lấy ra + còn lại, nó có quyền q y ưu tiên không g thấp p hơn nhưng g bằng, g, trên ngăn xếp; và sau đó đNy + vào stack Vũ... dấu mở ngoặc : đưa vào stack „ Toán tử được đưa ra đầu ra sau khi xử lý, nhưng h dấ ngoặc dấu ặ thì hì không khô „ Dấu + ưu tiên thấp nhất, ( là ưu tiên cao nhất ấ Vũ Anh Dũng - Khoa CNTT 18 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ „ „ Đầu tiên, ký hiệu a được đọc, do vậy nó được ợ truyền y tới đầu ra Sau đó + được đọc và được đặt lên trên ngăn xếp xếp Tiếp theo b được đọc và được truyền tới... việc xóa được thực hiện ở đầu còn lại Thêm phần tử : enqueue, enqueue nó chèn một phần tử vào cuối của danh sách (được gọi là rear) Xó phần Xóa hầ tử : dnqueue, d nó ó xóa ó một ột phần hầ tử ở đầu của danh sách (được gọi là front) Vũ Anh Dũng - Khoa CNTT 26 Mô hình hàng đợi „ Mô hình hàng đợi với phép enqueue và dequeue Vũ Anh Dũng - Khoa CNTT 27 Sử dụng mảng cài đặt hàng đợi „ Sử dụng mảng „ Mảng ... Vũ Anh Dũng - Khoa CNTT 21 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ Ký hiệu đọc (, có quyền ưu tiên cao nhất,, đặt ặ lên ngăn g xếp p Vũ Anh Dũng - Khoa CNTT 22 Một số ứng dụng – Chuyển... Khoa CNTT 26 Mô hình hàng đợi „ Mô hình hàng đợi với phép enqueue dequeue Vũ Anh Dũng - Khoa CNTT 27 Sử dụng mảng cài đặt hàng đợi „ Sử dụng mảng „ Mảng vòng tròn Vũ Anh Dũng - Khoa CNTT 28 Các... làm rỗng ( ( Chúng ta đưa + Vũ Anh Dũng - Khoa CNTT 23 Một số ứng dụng – Chuyển từ trung tố sang hậu tố „ C ối Cuối ù Vũ Anh Dũng - Khoa CNTT 24 Một số ứng dụng – Lời gọi hàm „ „ Các lời gọi hàm

Ngày đăng: 11/12/2015, 16:46

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w