1. Trang chủ
  2. » Công Nghệ Thông Tin

DỮ LIỆU & GIẢI THUẬT k

11 523 1

Đ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 11
Dung lượng 197,28 KB

Nội dung

dữ liệu và giải thuật

SINH VIÊN: Bùi Duy thành Lớp: CNTT- K6 DỮ LiỆUGiẢI THUẬT   (hay) là một hệ đếm chỉ dùng hai ký tự làvàđể biểu đạt một giá trị số.  Nguyên tắc của phương pháp này là lấy số cần chuyển đổi chia cho 2 (kết quả chỉ lấy phần nguyên), sau đó tiếp tục lấy kết quả chia 2 (và cũng chỉ lấy phần nguyên), kết quả số nhị phân thu được là tập hợp các số của các phép chia. VÍ DỤ  Chuyển số 30 sang hệ nhị phân: 41 2 20 1 2 10 2 0 5 2 1 2 0 -> 001001 Đầu ên , chúng ta lấy 41 chia 2, kết quả được 20 và số là 1. Kế ếp , chúng ta lấy số 20 chia 2, kết quả được 10 và số là 0 Tiếp theo, ta lấy số 10 chia 2, kết quả được 5 và 0 Ta ếp tục lặp lại quá trình này cho đến khi kết quả chia 2 chúng ta được 0. Số nhị phân chúng ta thu được chính là tập hợp các số của các phép chia (lấy từ dưới lên). Số 41 trong hệ nhị phân sẽ là 001001 0 2 1 0 2 MINH HỌA BẰNG STACK 1 0 0 0 0 (41) 10 = (001001) 2 1 Ý nghĩa của stack:  Là phần tử nào vào trước thì sẽ là phần tử ra cuối cùng và ngược lại, phần tử nào vào sau thì ra trước. Hay còn gọi là LIFO( Last In Firt Out). 2.Tính giá trị biểu thức hậu tố Ta có ba cách là biểu thức tiền tố (prefix), trung tố (infix) và hậu tố (postfix). Hãy xem một chút giới thiệu về cách biểu diễn biểu thức tiền tố và hậu tố để hiểu rõ hơn về chúng. -  !: Biểu thức tiền tố được biểu diễn bằng cách đặt toán tử lên trước các toán hạng. Cách biểu diễn này còn được biết đến với tên gọi “"#$%&” . Với cách biểu diễn này, thay vì viết x+y như dạng trung tố, ta sẽ viết +xy. Tùy theo độ ưu tiên của toán tử mà chúng sẽ được sắp xếp khác nhau. - ' !: Ngược lại với cách Prefix, tức là các toán tử sẽ được đặt sau các toán hạng. Cách biểu diễn này được gọi là “"#$('%&” . )*+, !' ! Thuật toán để chuyển một biểu thức Infix sang dạn Prefix: Đọc từng token(Biểu thức) trong biểu thức infix từ trái qua phải, với mỗi token ta thực hiện các bước sau: - Nếu là toán hạng: cho ra output.a - Nếu là dấu mở ngoặc “(“: cho vào stack - Nếu là dấu đóng ngoặc “)”: lấy các toán tử trong stack ra và cho vào output cho đến khi gặp dấu mở ngoặc “(“. (Dấu mở ngoặc cũng phải được đưa ra khỏi stack) - Nếu là toán tử:  Chừng nào ở đỉnh stack là toán tử và toán tử đó có độ ưu tiênlớn hơn hoặc bằng toán tử hiện tại thì lấy toán tử đó ra khỏi stack và cho ra output.  Đưa toán tử hiện tại vào stack Sau khi duyệt hết biểu thức in9x, nếu trong stack còn phần tử thì lấy các token trong đó ra và cho lần lượt vào output. Một số ví dụ: , !  ! ' ! !- -! !- !-./ !/ !-/. !-0/ -!0/ !/0- !-1./2 -!./ !/ Quy tắc tính như sau:  Nói đơn giản hơn là:  - Nếu là toán hạng: push vào stack  - Nếu là toán tử: pop hai toán hạng trong stack ra và tính giá trị của chúng dựa vào toán tử này. Push kết quả đó lại vào stack.  Phần tử còn sót lại trong stack sau vòng lặp chính là kết quả của biểu thức. Ví dụ:Biểu thức trung tố304.có kết quả là 17,chuyển sang hậu tố ta được: 6 3 * 1 –  Lặp từ trái qua phải của biểu thức:  - 6:  push vào Stack  - 3:  push vào Stack  - *:  pop 6 và 3 ra rồi tính 6*3=18, push 18 vào Stack  - 1:  push 1 vào Stack  - -:  pop 18 và 1 ra rồi tính 18-1=17, push 17 vào Stack . stack Sau khi duyệt hết biểu thức in9x, nếu trong stack còn phần tử thì lấy các token trong đó ra và cho lần lượt vào output. Một số ví dụ: , !  ! ' ! !- -!  ! - !- ./ !/ ! -/ . !- 0/. thức:  -  6:  push vào Stack  -  3:  push vào Stack  -  *:  pop 6 và 3 ra rồi tính 6*3=18, push 18 vào Stack  -  1:  push 1 vào Stack  -  -: . ! -/ . !- 0/ -! 0/ !/ 0- !-1 ./2 -! ./ !/ Quy tắc tính như sau:  Nói đơn giản hơn là:  -  Nếu là toán hạng: push vào stack  -  Nếu là toán tử: pop hai toán hạng trong stack ra và

Ngày đăng: 14/05/2014, 12:15

TỪ KHÓA LIÊN QUAN