Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 6 của 6
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi duongvannam
    em đang bí bài tập tìm số lớn nhì trong Danh Sách Liên Kết Đơn.Anh em nào biết chỉ em với.thanks nhiều ạh
    Đầu tiên bạn hãy tìm số lớn nhất trong ds.
    Tiếp đến, tìm phần tử lớn nhì như sau: ghán phần tử đầu tiên trong ds là phần tử lớn nhì (lonnhi), tiếp đến duyệt ds, nếu có phần tử nào mà lớn hơn lonnhi và khác lớn nhất thì ghán phần tử đó là lonnhi
    int lonnhi=p->key;
    Mã:
    while (p!=NULL)
    {
           if(lonnhi<p->key && p->key!=lonnhat)
                 lonnhi=p->key;
           p=p->next;
    }
    Đại khái là vậy, tự làm tiếp nhé

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Thuật toán trên sai. Khi tìm giá trị lớn nhất có thể khởi đầu bằng trị của phần tử đầu tiên. Nhưng khi dùng cách này cho phần tử lớn nhì sẽ bị lỗi nếu phần tử đầu tiên có trị lớn nhất.

    Nếu thực ý muốn tìm giá trị lớn nhất trước rồi mới tìm giá trị lớn nhì thì người ta dùng hàm giá trị lớn kế tiêp. Như vậy có thể mở rộng ra dùng hàm để tìm đến giá trị lớn thứ k.

    int soLonNhat = giatrilonketiep(lst, 999999999); // trả về giá trị lớn nhất và nhỏ hơn tham thứ hai
    int soLoNhi = giatrilonketiep(lst, soLonNhat);

  4. #4
    Trích dẫn Gửi bởi VoTichSu
    Thuật toán trên sai. Khi tìm giá trị lớn nhất có thể khởi đầu bằng trị của phần tử đầu tiên. Nhưng khi dùng cách này cho phần tử lớn nhì sẽ bị lỗi nếu phần tử đầu tiên có trị lớn nhất.

    Nếu thực ý muốn tìm giá trị lớn nhất trước rồi mới tìm giá trị lớn nhì thì người ta dùng hàm giá trị lớn kế tiêp. Như vậy có thể mở rộng ra dùng hàm để tìm đến giá trị lớn thứ k.

    int soLonNhat = giatrilonketiep(lst, 999999999); // trả về giá trị lớn nhất và nhỏ hơn tham thứ hai
    int soLoNhi = giatrilonketiep(lst, soLonNhat);
    hàm này viết thế nào anh ạh e ko hỉu lắm thanks anh

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Thuật toán này tôi đã chỉ mấy lần rồi.
    Tìm cả hai sô lớn nhất và lớn nhì cùng một lúc.

    Mã:
    // chôm code của VB
    
    lonnhi = SORATNHO;
    lonnhat = lonnhi+1;
    while (p!=NULL)
    {
           if (p->key > lonnhat)
           {
                 lonnhi = lonnhat;
                 lonnhat = p->key;
           }
           else if(p->key > lonnhi)
                 lonnhi=p->key;
           p=p->next;
    }
    // nếu sau vòng lặp, lonnhi <= SORATNHO+1 là ds này không có số lớn nhì

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    em có đoạn code giá trị lớn nhất thế này.
    Mã:
    int giatrilonnhat(List l) 
    { 
     Node *p=l.head; 
     int max=p->info; 
     while (p!=NULL) 
     { 
      p=p->next; 
      if (p->info>max) 
       max=p->info; 
     } 
     return max; 
    }
    em làm code thế này thì kết quả ra là sai ạh buồn thảm thương (

    Mã:
    int giatrilonnhi(List l) 
    { 
     Node *p=l.head; 
     int max=p->info; 
     int lonnhi=p->info;
     while (p!=NULL) 
     { 
      p=p->next; 
      if (p->info>max) 
       max=p->info; 
       if(lonnhi<p->info && p->info!=max)
                 lonnhi=p->info;
           p=p->next;
     } 
    
    return lonnhi;
      
    }

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •