Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Chuyển từ vòng lặp while sang đệ quy!

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    46

    Mặc định Chuyển từ vòng lặp while sang đệ quy!

    Bài toán đảo ngược DSLK nếu ko dùng đệ quy thì mình làm thế này.


    C++ Code:
    1. void reverse(node *head)
    2. {
    3.     node *p=head, *q;
    4.     head=NULL;
    5.     while(p!=NULL)
    6.     {
    7.         q=p->next;
    8.         p->next=head;
    9.         head=p;
    10.                 p=q;
    11.     }
    12. }

    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?

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    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.

  3. #3
    Ngày gia nhập
    09 2008
    Bài viết
    46

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    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 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:
    1. void linkedlist::reverse_list()
    2. {
    3.     node *p=this->head, *q;
    4.     this->head=NULL;
    5.     while(p!=NULL)
    6.     {
    7.         q=p->next;
    8.         p->next=this->head;
    9.         this->head=p;
    10.         p=q;
    11.     }
    12.    
    13. }

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    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:
    1. void linkedlist::reverse_list(node *pnode)
    2. {
    3.     if (pnode == NULL)
    4.         return;
    5.     else
    6.     {
    7.         node *p=this->head, *q;
    8.         this->head=NULL;
    9.         q=p->next;
    10.         p->next=this->head;
    11.         this->head=p;
    12.         p=q;
    13.         reverse_list(p)
    14.     }  
    15. }
    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.

Các đề tài tương tự

  1. Bài tập C++ chuyển đổi cơ số bằng stack bị lỗi vòng lặp while lặp vô hạn
    Gửi bởi cho nho trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 22-06-2011, 01:34 AM
  2. ADO.NET Chuyể Phần mềm QLNS sang Ngôn ngữ Dynamic Programming. Ai chuyển giúp mình!?
    Gửi bởi huynhanhton trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 03-04-2011, 11:41 PM
  3. Bài tập C Chuyển đổi chương trình sử dụng vòng lặp while?
    Gửi bởi NDThang trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 21-10-2010, 04:44 PM
  4. Chuyển một số sang chuỗi | Chuyển 1 số sang xâu ?
    Gửi bởi xuanhung_cntt trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 03-05-2009, 11:48 PM
  5. Chuyển hệ thập phân sang nhị phân chỉ dùng vòng for không dùng mảng
    Gửi bởi zodjac1990 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 24-02-2009, 06:16 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn