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

Cấu trúc dữ liệu và giải thuật (chương 2) docx

24 805 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 24
Dung lượng 374 KB

Nội dung

A C CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT (501040) B F D E Chương 2: Stack G K H Mô tả stack Một stack cấu trúc liệu mà việc thêm vào loại bỏ thực đầu (gọi đỉnh – top stack) Là dạng vào sau trước – LIFO (Last In First Out) ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thơng tin Chương 2: Stack Ví dụ stack Stack rỗng: Đẩy (push) Q vào: Q A Đẩy A vào: Q A Lấy (pop) => A: Q Lấy => Q stack rỗng: Q ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 2: Stack Ứng dụng: Đảo ngược danh sách Yêu cầu: Đảo ngược danh sách nhập vào Giải thuật: Lặp lại n lần 1.1 Nhập vào giá trị 1.2 Đẩy vào stack Lặp stack chưa rỗng 2.1 Lấy giá trị từ stack 2.2 In ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 2: Stack Đảo ngược danh sách – Ví dụ Cần nhập số vào Nhập Ban đầu Nhập Lấy => Lấy => 7 5 Lấy => Stack rỗng Ngừng Lấy => Nhập Nhập ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin 1 Chương 2: Stack Đảo ngược danh sách – Mã C++ #include using namespace std; int main( ) { int n; double item; stack numbers; cout > n; for (int i = 0; i < n; i++) { cin >> item; numbers.push(item); } while (!numbers.empty( )) { cout = maxstack) return overflow; else entry[count++] = item; return success; } template Error_code Stack:: pop() { if (count == 0) return underflow; else count ; return success; } ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 2: Stack 15 Lấy giá trị đỉnh stack Giải thuật: Nếu phần tử stack 1.1 Trả giá trị vị trí đỉnh Mã C++: template Error_code Stack:: top(Entry &item) { if (count == 0) return underflow; else item = entry[count - 1]; return success; } ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 2: Stack 16 Reverse Polish Calculator Mơ tả tốn: Các toán hạng đọc vào trước đẩy vào stack Khi đọc vào toán tử, lấy hai toán hạng từ stack, tính tốn với tốn tử này, đẩy kết vào stack Thiết kế phần mềm: Cần stack để chứa toán hạng Cần hàm get_command để nhận lệnh từ người dùng Cần hàm do_command để thực lệnh ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 2: Stack 17 Reverse Polish Calculator – Thiết kế chức Tập lệnh: ‘?’: đọc giá trị đẩy vào stack Toán tử ‘+’, ‘-’, ‘*’, ‘/’: lấy giá trị stack, tính tốn đẩy kết vào stack Toán tử ‘=’: in đỉnh stack ‘q’: kết thúc chương trình ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 2: Stack 18 Reverse Polish Calculator – Ví dụ Tính tốn biểu thức: + * = Ban đầu Toán tử ? Toán tử ? Nhập vào Nhập vào Khoa Công nghệ Thông tin Tốn tử + Lấy Tính + => 8 Toán tử ? Toán tử * Nhập vào Lấy Tính * => 16 ĐH Bách Khoa Tp.HCM 16 Đẩy vào 16 Đẩy vào 16 Toán tử = In 16 Chương 2: Stack 19 Reverse Polish Calculator – Hàm get_command char get command( ) { char command; bool waiting = true; cout > command; command = tolower(command); if (command == ‘?’ || command == ‘=‘ || command == ‘+’ || command == ‘−’|| command == ‘*’ || command == ‘/’ || command == ‘q’) waiting = false; else { cout

Ngày đăng: 13/07/2014, 23:20

TỪ KHÓA LIÊN QUAN