Tôi có một dự án để làm nơi tôi phải thay đổi SLList thành LispList và thêm một vài chức năng khác. Câu hỏi duy nhất của tôi là Prof của tôi. đã yêu cầu chúng tôi không tạo các nút mới cho một hàm gọi là rest(), trong đó danh sách còn lại được trả về mà không có đầu.Bằng cách trả về một con trỏ trỏ tới một nút, phần còn lại của danh sách có được trả lại không? C++
Node* rest(){
Node* nextToHead = head -> next; //this is a pointer to the next node in the list
return nextToHead;
}
bằng cách sử dụng con trỏ nextToHead, nó sẽ trỏ đến phần còn lại của danh sách không? Nếu không, sẽ rất tuyệt nếu các bạn có thể cho tôi lời khuyên về cách trả lại danh sách mà không cần đầu và không sử dụng bất kỳ nút nào khác.
Bạn muốn nhận meta như thế nào? Về mặt kỹ thuật, chỉ có địa chỉ được trả về. Tất nhiên điều đầu tiên bạn sẽ làm là sử dụng địa chỉ đó để truy cập 'Node'. Bạn có thể sử dụng 'Node' để truy cập bất kỳ' Node' nào hiển thị. Hoặc bạn có thể 'xóa' con trỏ và thổi smurf ra khỏi danh sách liên kết. Tôi thường không khuyên bạn nên cung cấp quyền truy cập vào 'Node's vì tiềm năng lạm dụng. – user4581301
Ah. Tôi nghĩ giờ tôi đã hiểu câu hỏi rồi. Đặt các liên kết 'Node' là' private' và tạo 'SLList' thành' friend' để nó có thể thấy các liên kết nhưng không ai có thể. Điều này giảm thiểu thiệt hại có thể được thực hiện với một con trỏ 'Node'. Nó vẫn có thể được 'xóa', nhưng đối mặt với nó, bạn không thể cứu mọi người khỏi bị ngu ngốc. – user4581301
Nếu đây là những nghĩa vụ phải liệt kê Lisp, 'rest' sẽ trả về một' LispList'. Danh sách Newell-Shaw-Simon khác với danh sách được liên kết mà bạn thường thấy trong các ngôn ngữ hướng đối tượng - không có sự tách biệt thực sự giữa danh sách và các nút của nó. – molbdnilo