PDA

View Full Version : Nên chọn kiểu cấu trúc dữ liệu nào ???



hoavinh108
24-12-2005, 01:09
Mình có 1 số đề bài sau đây, mình chỉ mong được các bạn chỉ cho là nên xài kiểu cấu trúc dữ liệu nào, chứ không dám nhờ các bạn giải dùm toàn bộ bài tập

Ðề 0:
Một cửa hàng sách muốn tin học hóa việc quản lý các đầu sách đang có trong cửa hàng, với mỗi đầu sách cần quản lý các thông tin: mã đầu sách, tên sách, năm xuất bản, tên tác giả chính, số lượng, đơn giá. Biết các thao tác có thể xảy ra là:
(a) Liệt kê các đầu sách đang có trong cửa hàng theo thứ tự mã đầu sách (MĐS) tăng dần.
(b) Liệt kê các đầu sách đang có trong cửa hàng theo thứ tự tên sách tăng dần.
(c) Liệt kê các đầu sách đang có trong cửa hàng theo thứ tự năm xuất bản tăng dần.
(d) Liệt kê các đầu sách đang có trong cửa hàng theo thứ tự số lượng giảm dần.
(e) Liệt kê các đầu sách đang có trong cửa hàng theo thứ tự đơn giá giảm dần.
(f) Tìm và hiển thị thông tin của một đầu sách khi biết MĐS (người dùng nhập vào).
(g) Nhập thêm một đầu sách mới.
(h) Sửa 1 trong các thông tin tên sách, năm xuất bản, tên tác giả chính, đơn giá (biết MĐS)
(i) Tăng số lượng sách đang có của một đầu sách thêm N quyển (trường hợp này xảy ra khi cửa hàng nhập thêm N quyển thuộc đầu sách này).
(j) Giảm số lượng sách đang có của một đầu sách đi N quyển (trường hợp này xảy ra khi cửa hàng bán N quyển sách này), nếu số lượng mới bằng 0 thì xóa đầu sách này ra khỏi danh sách các đầu sách đang quản lý.
(k) Tính tổng giá trị các quyển sách của cửa hàng (số tiền có được nếu bán tất cả các quyển sách đang có trong cửa hàng).
(l) Liệt kê ra màn hình (và ra file văn bản – nếu làm được) N đầu sách có đơn giá cao nhất (N nhập vào).
(m) Liệt kê ra màn hình (và ra file văn bản – nếu làm được) N đầu sách có đơn giá thấp nhất (N nhập vào).
(n) Liệt kê ra màn hình (và ra file văn bản – nếu làm được) N đầu sách mới nhất (có năm xuất bản gần đây nhất).
(o) Liệt kê ra màn hình (và ra file văn bản – nếu làm được) N đầu sách cũ nhất (có năm xuất bản xa nhất).

1. Xây dựng cấu trúc dữ liệu thích hợp để biểu diễn các đầu sách phục vụ cho 7 nhu cầu bất kỳ (tự chọn) trong 15 nhu cầu trên.
2. Xây dựng chương trình thực hiện 7 chức năng đã chọn.

Theo mình nghĩ thì nên chọn kiểu mảng. Các bạn có ý kiến gì khác xin chỉ giúp cho mình với.


Ðề 1:
Giả sử có nhu cầu quản lý cây gia phả như sau: liệt kê toàn bộ những người trong gia phả, liệt kê danh sách tất cả những con cháu của 1 người nào đó (thông tin cần liệt kê: tên, đời thứ mấy, năm dinh, năm mất nếu có), tìm & liệt kê tất cả thông tin của 1 người khi biết 1 /1số thông tin về người đó, thêm 1 người vào danh sách, sửa thông tin của 1 người trong danh sách.
1. Xây dựng cấu trúc dữ liệu thích hợp để biểu diễn cây gia phả trên.
2. Xây dựng chương trình thực hiện các chức năng đã mô tả.

Theo mình thì nên chọn kiểu dữ liệu cây. Nhưng mình không biết là nên chọn cây n- phân với n=?
Hoặc cũng có thể chọn kiểu xâu kép. Các bạn có ý kiến gì khác xin chỉ giúp cho mình với.


Ðề 2:
Giả sử có nhu cầu quản l‎ý các thư mục của 1 đĩa logic trên máy tính như sau: lưu lại danh sách tên của các thư mục trên đĩa, liệt kê toàn bộ những thư mục trong đĩa theo đúng thứ tự cha-con, tìm 1 thư mục & liệt kê đường dẫn đến nó, liệt kê tên các thư mục trùng nhau & số lần trùng, tạo 1 thư mục con (nội dung rỗng), xóa 1 cây thư mục (xóa hết những thư mục con cháu bên trong thư mục chỉ ra).
1. Xây dựng cấu trúc dữ liệu thích hợp để biểu diễn hệ thống thư mục trên.
2. Xây dựng chương trình thực hiện các chức năng đã mô tả.

Theo mình thì nên chọn kiểu dữ liệu cây. Nhưng mình không biết là nên chọn cây n- phân với n=? Các bạn có ý kiến gì khác xin chỉ giúp cho mình với.


Ðề 3:
Giả sử có nhu cầu quản lý lịch làm việc như sau: lịch làm việc là một danh sách các công việc chuẩn bị thực hiện (tức chưa thực hiện ở thời điểm hiện tại), với mỗi công việc gồm có tên công việc và thời điểm bắt đầu. Dĩ nhiên lịch làm việc này không cố định mà sẽ luôn thay đổi: bất cứ việc gì cần làm mà ta chợt nghĩ ra nếu có thời điểm dự định làm là có thể đưa vào lịch; và các công việc mà thời điểm bắt đầu làm tương ứng đã qua thì sẽ xóa đi, hoặc chưa đến thời điểm làm nhưng thấy không cần thực hiện công việc đó nữa thì cũng xóa ra khỏi lịch.
1. Xây dựng cấu trúc dữ liệu thích hợp để biểu diễn lịch làm việc trên.
2. Xây dựng hệ thống chương trình thực hiện các chức năng cần thiết cho người dùng.

Đề này thì mình không biết nên chọn kiểu nào? Các bạn có ý kiến gì khác xin chỉ giúp cho mình với.

Xin cám ơn các bạn trước.
Lưu ý: các đề trên chỉ cho phép sử dụng kiểu mảng, danh sách liên kết (xâu), cây. và dùng trên lập trình hướng thủ tục

john_vn
14-04-2006, 21:05
Đề số 3: Nên dùng danh sách liên kết, theo kiều QUEUE (FIFO) là hợp lý vì những công việc làm rồi sẽ dễ dàng loại bỏ ra khỏi danh sách các công việc.
Đề số 0 : Dùng mảng cấu trúc là hợp lý nếu bạn biết được chính xac số lượng đầu sách, nếu không chỉ có cách dùng DSLK, theo đệ nghĩ dùng DSLK Đôi (có thể có vòng) là hợp lý hơn DSLK đơn vì đề huynh yêu cầu cần xử lý nhiều công việc đến các đối tượng liên kế nhau.
Đề số 1,2 : cây đa phân thôi. Một cấu trúc cây trong đó các phần tử con là một danh sách liên kết.
Nhưng trong tất cả trường hợp, do không biết được số lượng phần tử, tốt nhất bạn dùng Danh sách liên kết hết đi, các cây chỉ là mô hình bạn có thể dùng DSLK để sắp xếp chúng theo LeftNodeRight, hay RNL....