ĐH KHTN TP HCM/ Khoa CNTT Cấu trúc dữ liệu và giải thuật 1 ĐH KHTN TP HCM/ Khoa CNTT HƯỚNG DẪN THỰC HÀNH DANH SÁCH LIÊN KẾT NGĂN XẾP HÀNG ĐỢI I Mục tiêu Sinh viên cài đặt các cấu trúc dữ liệu cơ bản n[.]
ĐH KHTN TP.HCM/ Khoa CNTT HƯỚNG DẪN THỰC HÀNH DANH SÁCH LIÊN KẾT - NGĂN XẾP - HÀNG ĐỢI I Mục tiêu Sinh viên cài đặt cấu trúc liệu danh sách liên kết, ngăn xếp, hàng đợi ứng dụng để giải toán đặt II Qui định nộp - Sinh viên nộp tập tin nén, có tên .zip .rar chứa source code báo cáo chương trình - Sinh viên nộp kèm file báo cáo ghi mức độ hồn thành cơng việc mình, liệu mà test - Tất tập lập trình theo command line (tham số dòng lệnh) - Kiến trúc thư mục nộp: o MSSV ▪ MSSV_BT1: • Source: chứa file cpp • Header: chứa file h • Test case: chứa file input để test thử • … ▪ MSSV_BT2: … - Môi trường làm việc: Visual Studio 2015 môi trường tương đương Không sử dụng hàm bị lỗ hổng bảo mật gets, … - Hạn nộp: xem link Moodle - Bài giống hay nộp file rác điểm MÔN HỌC III Nội dung BT1 Sử dụng cấu trúc liệu ngăn xếp Stack (cài đặt danh sách liên kết Linked List), viết chương trình cho phép đọc nội dung từ tập tin kiểm tra tính hợp lệ việc sử dụng toán tử biểu thức toán học gồm toán hạng số nguyên toán tử: +, -, *, /, (, ), [, ], {, } Lưu ý: cần cài đặt đầy đủ hàm ngăn xếp Stack: push, pop, isEmpty, top - Ví dụ 3.1.1: biểu thức + [2 / (3 - 4) + 5] * hợp lệ - Ví dụ 3.1.2: biểu thức + (2 / [3 + 4) - 5] * khơng hợp lệ (sai dấu đóng mở ngoặc trịn ngoặc vuông) Cấu trúc liệu giải thuật - Ví dụ 3.1.3: biểu thức (1 + ) / + (4 5) không hợp lệ (vị trí thứ 3: sau dấu cộng khơng có tốn hạng, vị trí thứ 9: sau tốn hạng khơng có tốn tử phù hợp) Gợi ý kiểm tra tính hợp lệ việc sử dụng dấu đóng mở ngoặc: - Ví dụ 3.1.1: + [2 / (3 - 4) + 5] * Ta duyệt kí tự biểu thức, gặp dấu mở ngoặc push vào ngăn xếp, ngược lại gặp dấu đóng ngoặc phù hợp pop khỏi ngăn xếp, gặp dấu đóng ngoặc khơng phù hợp biểu thức khơng hợp lệ Duyệt đến kí tự thứ 3: gặp dấu mở ngoặc vuông → push(‘[’) → nội dung ngăn xếp “[“ Duyệt đến kí tự thứ 5: gặp dấu mở ngoặc tròn → push(‘(’) → nội dung ngăn xếp “[ (“ Duyệt đến kí tự thứ 9: gặp dấu đóng ngoặc trịn → cần pop(‘(’) → hợp lệ → nội dung ngăn xếp “[” Duyệt đến kí tự thứ 12: gặp dấu đóng ngoặc vuông → cần pop(‘[’) → hợp lệ → nội dung ngăn xếp “” (rỗng) Duyệt hết toàn biểu thức ngăn xếp rỗng → biểu thức sử dụng dấu ngoặc hợp lệ - Ví dụ 3.1.2: + (2 / [3 + 4) - 5] * Duyệt đến kí tự thứ 3: gặp dấu mở ngoặc tròn → push(‘(’) → nội dung ngăn xếp “(“ Duyệt đến kí tự thứ 5: gặp dấu mở ngoặc vuông → push(‘[’) → nội dung ngăn xếp “( [“ Duyệt đến kí tự thứ 9: gặp dấu đóng ngoặc trịn → cần pop(‘(’) → khơng hợp lệ đỉnh ngăn xếp ‘[’→ biểu thức sử dụng dấu ngoặc không hợp lệ Command line: MSSV_BT1.exe kt input.txt output.txt Ví dụ: 1512345_BT1.exe kt in1.txt out1.txt Nghĩa kiểm tra biểu thức chứa tập tin in1.txt xuất kết out1.txt Định dạng input: - Dòng thứ tự lẻ chứa số thành phần biểu thức - Dòng thứ tự chẵn nội dung biểu thức tương ứng, thành phần biểu thức cách khoảng trắng - Ví dụ: 15 + [2 / (3 - 4) + 5] * 11 (1 + ) / + (4 5) Định dạng output: - Biểu thức hợp lệ hay không, không hợp lệ vị trí Cấu trúc liệu giải thuật - Ví dụ: + [2 / (3 - 4) + 5] * la bieu thuc hop le (1 + ) / + (4 5) khong hop le tai vi tri: 3, BT2 Cài đặt hàng đợi Queue cho liệu sinh viên (mã sinh viên, họ tên, ngày tháng năm sinh) với hàm enQueue, deQueue, isEmpty front sử dụng danh sách liên kết Linked List Command line: MSSV_BT2.exe Queue Data.txt Input.txt Output.txt Ví dụ: 1512345_BT2.exe Queue data1.txt in1.txt out1.txt Nghĩa đọc danh sách liệu sinh viên chứa tập tin data1.txt, lời gọi enQueue, deQueue in1.txt xuất danh sách liệu kết out1.txt Định dạng data: - Mỗi dịng chứa thơng tin liệu sinh viên, cách dấu “,” - Ví dụ: 1512001,Nguyen Van A,27/02/1997 1512002,Nguyen Thi B,06/11/1997 1512003,Nguyen Van B,20/09/1997 Định dạng input: - Các lần gọi enQueue deQueue cần thực - Ví dụ: enQueue 1512004,Nguyen Thi C,15/09/1997 deQueue deQueue Định dạng output: - Giống định dạng tập tin data BT3 (không bắt buộc) Mở rộng tập 1, viết chức tính giá trị biểu thức biểu thức hợp lệ Command line: MSSV_BT1.exe gt input.txt output.txt Ví dụ: 1512345_BT3.exe gt in1.txt out1.txt Nghĩa kiểm tra tính giá trị biểu thức chứa tập tin in1.txt xuất kết out1.txt Định dạng input: - Như tập Định dạng output: - Giá trị biểu thức biểu thức hợp lệ, khơng hợp lệ vị trí - Ví dụ: + [2 / (3 - 4) + 5] * = 19 (1 + 2) / + (4 - 5) * = -5 (1 + ) / + (4 5) khong hop le tai vi tri: 3, Cấu trúc liệu giải thuật ... in1.txt xuất kết out1.txt Định dạng input: - Như tập Định dạng output: - Giá trị biểu thức biểu thức hợp lệ, khơng hợp lệ vị trí - Ví dụ: + [2 / (3 - 4) + 5] * = 19 (1 + 2) / + (4 - 5) * = -5 (1 +... dung ngăn xếp “[“ Duyệt đến kí tự thứ 5: gặp dấu mở ngoặc tròn → push(‘(’) → nội dung ngăn xếp “[ (“ Duyệt đến kí tự thứ 9: gặp dấu đóng ngoặc trịn → cần pop(‘(’) → hợp lệ → nội dung ngăn xếp. .. cần pop(‘[’) → hợp lệ → nội dung ngăn xếp “” (rỗng) Duyệt hết toàn biểu thức ngăn xếp rỗng → biểu thức sử dụng dấu ngoặc hợp lệ - Ví dụ 3.1.2: + (2 / [3 + 4) - 5] * Duyệt đến kí tự thứ 3: gặp