Các vấn đề chung trong xây dựng chương trình:

Một phần của tài liệu Ngôn ngữ HTML (Trang 31 - 35)

dựng chương trình:

1. Các cấu trúc dữ liệu sử dụng trong chương trình: chương trình:

Code:

typedef struct node

{ char Data ;// Kí tự alpha

int Tsuat ;// Tần suất kí tự alpha node * Left ;// Con trỏ trái

node * Right ;// Con trỏ phải };

typedef node * HTree ; struct list

1. Lập bộ ký tự (a[i].alph) và tần số tương ứng (a[i].ts) từ một xâu ký tự (s): ứng (a[i].ts) từ một xâu ký tự (s):

- Đọc ký tự đầu tiên của xâu cho vào a[0].alpha tương ứng là a[0].ts bằng 1.

- Duyệt từng ký tự còn lại của xâu, nếu gặp ký tự nào đã có trong mảng a[i].alph thì tăng a[i].ts lên 1, nếu chưa có ký tự đó thì thêm phần tử mới vào mảng và cho tần số tương ứng bằng 1.

2. Cài đặt cây Huffman từ tập ký tự và tần số cho trước (chứa trong mảng a[]): tần số cho trước (chứa trong mảng a[]): - Sắp xếp lại các a[i] theo tần số.

- Khởi tạo các node[i], node[i].alph và

node[i].TSuat tương ứng với a[i].alph và a[i].ts sau khi đã sắp xếp. Các thành phần còn lại có giá trị là NULL (chưa xác định).

- Tạo cây Huffman bằng cách chèn thêm nút mới đồng thời sắp xếp lại theo thứ tự tần số tăng dần.

3. Mã hóa:

- Đọc từng ký tự của chuỗi (hoặc file), gặp phần tử nào thì hiển thị xâu mã hóa tương ứng hoặc ghi

thêm xâu mã hóa tương ứng của ký tự đó vào file đã mã hóa (fileout).

4. Giải mã:

- Duyệt cây Huffman từ trên xuống, gặp 0 thì nhảy xuống con trái, gặp 1 thì nhảy xuống con phải, cho tới khi gặp node có thành phần alph khác NULL. - Nếu gặp node có thành phần alph khác NULL thì hiển thị ký tự của node đó và nhảy về gốc

* H n ch :ạ ế

Chưa xử lý dấu xuống dòng trong file ký tự. file ký tự.

Qui ước dấu xuống dòng kết thúc file

Một phần của tài liệu Ngôn ngữ HTML (Trang 31 - 35)

Tải bản đầy đủ (PPTX)

(35 trang)