1. Theo như trên đây có phải là con trỏ Ra nắm phần tử đầu, còn con trỏ Vao nắm tất cả các phần tử không.??? 2. Trong dòng: kh->Truoc= Vao # Thì cái này có phải chỉnh lại vị trí con trỏ không ??? Vao= kh # Nạp dữ liệu vào phải không ??? 3. q->Truoc= Null # thì dòng này có ý nghĩa gì. Trong dòng này mình không rõ về cấu trúc tự trỏ cho lắm ( có khi trong sách nói nếu đã nhập dữ liệu rồi thì nó có thể trỏ đến phần tử cuối cùng, nhưng mình cảm thấy nó trỏ đến phần tử tiếp theo thì phải ??, giải thích dùm mình chỗ này ). 4. Hàng đợi và Danh sách và Stack thì khác nhau như thế nào, mình thấy nguyên tắc làm việc thấy chung chung giống nhau quá. Khi nào bài đó là hàng đợi, khi nào thì bài đó cần làm theo kiểu danh sách tuyến tính... ??. 5. Các bạn cho mình coi vài ví dụ về danh sách tuyến tính + danh sách nối kép. Mình chưa rõ làm hai dạng này ra sao nữa ??. Cám ơn các bạn đã đọc bài này. Cảm ơn.
1. Sao tụi đọc không thấy pt Ra ko được khởi gán lúc nào vậy(hay là tụi lầm). Vậy giá trí nó là NULL cho tơi lúc xét While(Ra!=NULL) rùi, còn làm gì được. Cái này nó nhập kiểu Vao nó giữ con trỏ phần tử cuối hàng đợi, phần tử sau trỏ tới phần tử trước. Khi muốn xuất nó lại duyệt ngược tìm phần từ đầu hàng đợi.(Cái này vãi thật, chắc cố tình làm cho rắc rối). Vao nó nằm cuối hàng đợi(mà hàng đợi này trỏ ng nên có thể coi nó nắm toàn bộ) 2)kh->Truoc = Vao cái này là liên kết phần từ sau trỏ tới cái trước để tí mà duyệt(cái này ds nối đơn mà) Vao = kh(cập nhật vị trí con trỏ tới phần từ cuối hàng đợi) 3) q->Truoc = NULL (Do phần tử trước nó bị free nên cập nhật là là NULL để chỉ là nó nằm đầu danh sách(DS này ngược nhe)). 4)Hàng đợi(Queue): FIFO giống như bạn xếp hàng xem film, muốn cái nào tới trước được xử lý trước. Ngăn xếp(Stack): giống như tủ đựng hồ sơ. Cái nào xếp vào trước thì phải lấy mấy cái vào sau ra trước mới lấy được cái xếp vào trước.(Ngược lại với hàng đợi) Danh sách: chỉ là cách bạn tổ chức xắp xếp dữ liệu cho việc duyệt và xử lý thui(Bạn có thể dùng nó như hàng đợi hay ngăn xếp tùy cách bạn duyệt hàng đợi đó. Hay bạn có thể dùng mảng để tổ chức một stack hay queue. Không nhất thiết phải là Danh Sách liên kết). 5) Danh sách ltuyến tính(chắc là LK đơn, bên trường mình gọi vậy) thì bạn không thể duyệt ngược lại phần tử trước đó, phải duyệt tuần tự(tuyến tính).(Chỉ duyệt được toàn bộ danh sách nếu có phần tử nắm đầu danh sách). Danh sách nối kép: thì mỗi phần từ đều nắm con trỏ trước và sau nó nên có thể duyệt xuôi hay ngược cũng được.(Có thể duyệt toàn bộ danh sách nếu có được một phần tử của danh sách. Danh sách này tốn thêm một con trỏ và phải xử lý nhiều hơn chút.) Dựa vào nguyên lý đó bạn đọc bài toán thì mới áp dụng cụ thể. PS: Học lâu rùi nên nhớ sơ sơ.
biến Ra được gán rồi đó , dưới bên cấu trúc struct KhachHang đó. Có thể mình vẫn chưa nắm rõ phần này lắm. Mình sẽ nghiên cứu thêm.
Thì ý mình là gán nó khác NULL áh. Chứ cái đó khởi tạo là NULL tới câu lệnh While(Ra != NULL) thì nó false ngay đó rùi.