Bạn viết code này mình ko hiểu gì cả. Tại sao truyền head vào rồi lại gán cho nó bằng null, như thế truyền vào để làm gì ?
Bài toán đảo ngược DSLK nếu ko dùng đệ quy thì mình làm thế này.
C++ Code:
void reverse(node *head) { node *p=head, *q; head=NULL; while(p!=NULL) { q=p->next; p->next=head; head=p; p=q; } }
Giờ mình muốn chuyển từ dùng vòng lặp while sang đệ quy,bác nào có cách nào hay ko?
Bạn viết code này mình ko hiểu gì cả. Tại sao truyền head vào rồi lại gán cho nó bằng null, như thế truyền vào để làm gì ?
Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.
Bài này là đảo danh sách LK
Truyền vào để lấy phần tử đầu tiên của danh sách.Nếu không muón truyền vào thì thế này
C++ Code:
void linkedlist::reverse_list() { node *p=this->head, *q; this->head=NULL; while(p!=NULL) { q=p->next; p->next=this->head; this->head=p; p=q; } }
Cái biến head sao ko khai báo cục bộ, trước sau gì nó cũng bị gán về null mà ? Nói chung là mình cũng chưa hiểu rõ lắm. Thôi thì mình cứ chuyển code thành đệ quy thử xem sao.
C++ Code:
void linkedlist::reverse_list(node *pnode) { if (pnode == NULL) return; else { node *p=this->head, *q; this->head=NULL; q=p->next; p->next=this->head; this->head=p; p=q; reverse_list(p) } }
Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.