1. Trang chủ
  2. » Tất cả

Bài tập thực hành tuần 5 bài tập thực hành tuần 5 – bảng băm

3 19 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài Tập Thực Hành Tuần 5 – Bảng Băm
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài Tập Thực Hành
Định dạng
Số trang 3
Dung lượng 160,77 KB

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

Nội dung

Bài tập thực hành Tuần 5 – Bảng băm Bài 1 – Ôn Danh sách liên kết Thông tin Sinh Viên khai báo như sau struct SINHVIEN { char HoTen[51]; // Họ tên sinh viên char MSSV[10]; // Mã số sinh viên float Die[.]

Trang 1

Bài tập thực hành Tuần 5 – Bảng băm

Bài 1 – Ôn Danh sách liên kết

Thông tin Sinh Viên khai báo như sau

struct SINHVIEN {

char HoTen[51]; // Họ tên sinh viên

char MSSV[10]; // Mã số sinh viên

float DiemLT; // Điểm lý thuyết

float DiemTH; // Điểm thực hành

float DiemTB; // Điểm trung bình

}

Điểm trung bình được tính:

DiemTB = DiemLT*0.7 + DiemTH*0.3

Câu hỏi:

1 Hãy lưu danh sách sinh viên dưới dạng danh sách liên kết, biết thông tin sinh viên có cấu trúc dữ liệu khai báo như trên

2 Viết hàm nhập danh sách sinh viên

3 Viết hàm sắp xếp danh sách sinh viên theo thứ tự mã số sinh viên (MSSV) tăng dần

4 Viết hàm xếp loại, và in ra danh sách sinh viên có thông tin xếp loại:

Xếp loại:

- Nếu: DiemTB < 5, hoặc (DiemLT=0), hoặc (DiemTH=0) : Học lại (“HocLai”)

- Nếu: 5 <= DiemTB < 7 : Trung bình ("TrungBinh")

- Nếu: 7 <= DiemTB <8 : Khá ("Kha")

- Nếu: 8 <= DiemTB <9 : Giỏi ("Gioi")

- Nếu: 9 <= DiemTB <=10: Xuất sắc ("XuatSac")

5 Viết hàm xoá các sinh viên có điểm trung bình nhỏ hơn 5 (DiemTB < 5)

6 Viết chương trình cài đặt danh sách sinh viên để kiểm thử lại các hàm đã viết

Bài 2 – Hiện thực Bảng băm -Hashtable

a) Hiện thực Bảng băm với phương pháp Chaining (Giải quyết đụng độ theo phương pháp mắc xích)

Kiểu list<> của thư viện chuẩn STL được hướng dẫn sử dụng trong bảng sau:

Phương thức Ý nghĩa

size() Trả về số phần tử của danh sách

push_back(g) Thêm phần tử mới ‘g’ vào cuối danh sách

Trang 2

erase() Xoá một phần tử từ danh sách

resize() Thay đổi kích thước của mảng

begin() Trả về một iterator chỉ tới phần tử đầu tiên trong danh sách end() Trả về một iterator chỉ tới phần tử cuối cùng trong danh sách

Sử dụng kiểu list<T> để cài đặt Bảng băm – Hashtable

Bảng 2.1: Mã nguồn chương trình hiện thực Bảng băm

b) Hiện thực Bảng băm theo phương pháp Linear Probing (Phương pháp giải quyết đụng độ theo dò tìm tuyến tính)

Hướng dẫn: Tham khảo về hiện thực bảng băm theo link sau:

http://interactivepython.org/runestone/static/pythonds/SortSearch/Hashing.html#fig-chaining

Bài 3

Thiết kế một cấu trúc dữ liệu thực hiện các tác vụ: thêm _insert, xoá _delete, tìm kiếm _search và tạo số ngẫu nhiên _getRandom với O(1) (constant time)

Hướng dẫn: Mã nguồn được viết trước một phần trong Bảng 2.1

/* Hiện thực Bảng băm với Kiểu Dữ liệu list */

#include <iostream>

#include <list>

using namespace std;

// Khai báo Bảng_băm

typedef struct {

int slots; // số ô nhớ của Bảng băm

list <int> *htable;

} Hash ;

// Cài đặt Các phương thức của Bảng băm

// Hàm băm

int hashFunc( Hash & h , int ) {

return ( x % h slots);

}

// Phương thức thêm một phần tử x vào Bảng băm

void insertItem( Hash &h, int x);

// Xoá một khoá khỏi Bảng băm

void deleteItem( Hash &h, int key);

Trang 3

Bài 4 Duyệt cây nhị phân theo thứ tự cột như sau:

Ví dụ:

Output:

A : 4

B : 2

C : 1 5 6

D : 3 8

E : 7

F : 9

=======================oOo=======================

Ngày đăng: 25/03/2023, 07:20

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

w