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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ngăn xếp ADT Stack ADT„ Ngăn xếp là một danh sách đặc biệt mà thaotác thêm insert và loại bỏ delete chỉ diễn ra ở 1 đầu.. Một số ứng dụng –Chuyển từ trung tố sang hậu tố „ Một số quy tắc

Trang 1

CẤU TRÚC DỮ LIỆU

CẤU TRÚC DỮ LIỆU

VÀ GIẢI THUẬT

Lý thuyết

Trang 3

Ngăn xếp ADT (Stack ADT)

„ Ngăn xếp là một danh sách đặc biệt mà thaotác thêm (insert) và loại bỏ (delete) chỉ diễn

ra ở 1 đầu

„ Ví trí tại đó phép thêm và xóa diễn ra luôn ở

„ Ví trí tại đó phép thêm và xóa diễn ra luôn ở

cuối của danh sách và được gọi là top.

Trang 4

Ngăn xếp ADT (Stack ADT)

„ Mô hình ngăn xếp :

„ Thêm 1 phần tử : push

Trang 5

Ngăn xếp ADT (Stack ADT)

„ Phép thêm và loại bỏ luôn diễn ra tại top

Trang 6

„ Thao tác pop được thực hiện bằng cách

xóa phần tử ở cuối danh sách

Thao tác top chỉ đơn thuần kiểm tra phần

Trang 8

Cài đặt ngăn xếp

„ Sử dụng mảng:

„ Dùng thêm biến topOfStack để điều khiển

„ Dùng thêm biến topOfStack để điều khiển

các thao tác với ngăn xếp

topOfStack = 1 nếu ngăn xếp rỗng

„ topOfStack = -1 nếu ngăn xếp rỗng.

Yêu cầu: Sinh viên tự viết code cho cả 3 cài

đặt sử dụng list, vector và array

Trang 9

Một số ứng dụng –

Cân bằng ký hiệu (Balancing)

„ Kiểm tra các dấu ngoặc trong quá trình

kiểm tra lỗi cú pháp

„ Tạo một ngăn xếp rỗng

„ Đọc các ký tự dấu

Nế ký là ộ ký hiệ ở đặ ó à ă ế

„ Nếu ký tự là một ký hiệu mở, đặt nó vào trong ngăn xếp

„ Nếu nó là một ký hiệu đóng, thì nếu ngăn xếp là rỗng thì thông báo một lỗi Ngược lại, lấy ra khỏi ngăn xếp

Trang 13

Một số ứng dụng –

Biểu thức hậu tố (Postfix Exp)

„ Tiếp theo ‘+’ được đọc, do vậy 3 và 2 đượclấy ra từ ngăn xếp và tổng của chúng, 5,

lấy ra từ ngăn xếp và tổng của chúng, 5,

được đNy vào

Trang 14

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 vào

Trang 15

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ấy ra và 5 + 40 = 45 được đNy vàoợ y ợ y

N

„ 3 được đNy vào

Trang 16

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

Trang 17

Một số ứng dụng –

Chuyển từ trung tố sang hậu tố

„ Sử dụng một ngăn xếp để chuyển một biểu

thức ở dạng chuNn (được gọi theo cách khácạ g ( ợ gọ

là trung tố - infix) sang dạng hậu tố - postfix

„ Chúng ta chỉ xét một bài toán nhỏ với các

„ Chúng ta chỉ xét một bài toán nhỏ với các

phép +, *, (, )

Ví dụ : a + b * c + ( d * e + f ) * g

„ Ví dụ : a + b * c + ( d * e + f ) * g

Trang 18

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 ra

„ Gặp toán hạng : chuyển qua đầu ra

„ Gặp toán tử, hoặc dấu mở ngoặc : đưa

vào stack

„ Toán tử được đưa ra đầu ra sau khi xử lý,

h dấ ặ hì khônhưng dấu ngoặc thì không

Dấu + ưu tiên thấp nhất, ( là ưu tiên cao

Trang 19

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 tới đầu ra ợ y

„ Sau đó + được đọc và được đặt lên trên

Trang 20

Một số ứng dụng –

Chuyển từ trung tố sang hậu tố

„ Tiếp theo * được đọc Mục ở đỉnh của ngănxếp toán tử có quyền ưu tiên thấp hơn so p q y p

với *, do vậy không có gì được đưa ra và * được đặt vào ngăn xếp Tiếp theo, c đượcợ ặ g p p , ợ

đọc và đưa ra output

Trang 21

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 ta thấy rằng chúng ta sẽ lấy ra * vàg y g g y

đặt nó lên đầu ra; lấy ra + còn lại, nó có

quyền ưu tiên không thấp hơn nhưng bằng,

trên ngăn xếp; và sau đó đNy + vào stack

Trang 22

Một số ứng dụng –

Chuyển từ trung tố sang hậu tố

„ Ký hiệu đọc tiếp theo là (, đang có quyền ưutiên cao nhất, đặt nó lên trên ngăn xếp., ặ g p

Trang 23

Một số ứng dụng –

Chuyển từ trung tố sang hậu tố

„ Bây giờ ta đọc ), do vậy ngăn xếp được làm rỗng cho tới ( Chúng ta đưa ra +

Trang 24

Một số ứng dụng –

Chuyển từ trung tố sang hậu tố

C ối ù

„ Cuối cùng

Trang 25

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 một ví dụ về gọi hàm đệ quy

„ Có thể xem một ví dụ về gọi hàm đệ quy

„ Hàm tính n!

„ Hàm fibonaci

„ Hàm fibonaci

Trang 26

Hàng đợi ADT (Queue ADT)

„ Hàng đợi là danh sách mà việc chèn được

thực hiện ở một đầu trong khi việc xóa đượcthực hiện ở đầu còn lại

„ Thêm phần tử : enqueue nó chèn một phần

„ Thêm phần tử : enqueue, nó chèn một phần

tử vào cuối của danh sách (được gọi là rear)

hầ tử d ó ó ột hầ tử

„ Xóa phần tử : dnqueue, nó xóa một phần tử

ở đầu của danh sách (được gọi là front)

Trang 27

Mô hình hàng đợi

„ Mô hình hàng đợi với phép enqueue và

dequeue

Trang 28

Sử dụng mảng cài đặt hàng đợi

„ Sử dụng mảng

„ Mảng vòng tròn

Trang 29

Các ứng dụng của hàng đợi

„ Điều phối công việc cho máy in

„ Hàng đợi cuộc gọi

„ Hàng đợi cuộc gọi

„ Một số chương trình cần xử lý có hàng đợi

í d h t ì h d đ á SMS

ví dụ : chương trình dự đoán qua SMS

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

🧩 Sản phẩm bạn có thể quan tâm

w