Đối với để vẽ cấu trúc, rất khó để tránh va chạm (đường chéo) nếu bạn có hơn 2 thế hệ được hiển thị. Vì vậy, nếu ứng dụng của bạn cho phép bạn giữ cho nó xuống đến hai, đó là tuyệt vời. Tôi đã viết một số chương trình mà sử dụng loại một đại diện, hoặc theo chiều dọc:
hoặc theo chiều ngang:
Nếu bạn cần biết thêm các thế hệ hiển thị cùng một lúc, bạn sẽ cần phải đến với các đại diện khác, và họ có thể bắt đầu để có được khá thưa thớt chỉ để bạn có thể hiển thị tất cả mọi người trong cùng một thế hệ cùng cấp.
Đối với cách thể hiện mối quan hệ như cấu trúc dữ liệu - tốt, nó lộn xộn. Điều đơn giản nhất, sạch nhất là bất kỳ hai cá nhân nào tương ứng là mẹ và cha của cùng một cá nhân đều "kết hôn". Nhưng làm thế nào để bạn muốn đại diện cho nhiều đối tác, bước trẻ em và tương tự? Thật khó để trả lời mà không biết nhiều hơn về những gì chương trình của bạn phải làm. Có thể tập dữ liệu của bạn không có các biến chứng này. Nếu có, tuy nhiên, tốt hơn là suy nghĩ thông qua các trường hợp khó khăn đầu tiên - các đại diện đơn giản không cho vay mình để mở rộng dễ dàng để trang trải các trường hợp khó khăn.
Vẽ (bằng tay) một vài trong số các trường hợp khó nhất mà bạn dự đoán; sẽ đề xuất loại dữ liệu nào bạn cần để ghi lại và cách sắp xếp dữ liệu đó. Các lựa chọn bạn thực hiện khi bạn vẽ (ai đến trước, những ký hiệu và văn bản nào để sử dụng ở mỗi nút, v.v.) sẽ thông báo cho các quyết định về cấu trúc dữ liệu của bạn.
Đặt cả mẹ B và con của A có vẻ thừa - và dự phòng dẫn đến lỗi - hãy chọn một lỗi. Cái nào? Vâng, có nhiều thông tin hơn khi bạn đặt mẹ của B (giới tính của A) và chúng tôi biết bất kỳ cá nhân nào sẽ cần chính xác hai cha mẹ, so với số trẻ em nhiều hơn hoặc nhiều hơn. Vì vậy, tôi sẽ có xu hướng đi với chỉ thiết lập mẹ của B; bạn luôn có thể tìm ra con của bất kỳ cá nhân nào bằng cách lặp qua tất cả để chọn ra tập hợp có cha mẹ bằng với cá nhân được đề cập. Và thực sự lưu trữ mẹ & Mối quan hệ của cha (so với các mối quan hệ đơn giản của cha mẹ) có thể làm giảm sự trùng lặp (giả sử bạn đang lưu trữ giới tính với các cá nhân).
Nguồn
2010-12-26 20:52:55
Bạn muốn hiển thị nó như thế nào? – Roman