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

Đề tài: Sắp Xếp danh sách liên kết (DSLK) từ lớn đến nhỏ như thế nào?

  1. #1
    Ngày gia nhập
    09 2008
    Nơi ở
    TP HCM
    Bài viết
    7

    Mặc định Sắp Xếp danh sách liên kết (DSLK) từ lớn đến nhỏ như thế nào?

    Bạn nào có thể cho mình code sắp xếp một LinkList có sẵn được không. Mình đang gặp rắc rối với bài này. Sắp xếp từ lớn đến nhỏ.

  2. #2
    Ngày gia nhập
    09 2007
    Bài viết
    724

    bạn muốn sắp xếp bằng thuật toán gì???
    đối với Linklist thì Quick Sort là vô địch.
    Đây là hàm QuickSort trong class CList của mình, bạn tham khảo nhé.
    C++ Code:
    1.  
    2.     void QSort(CList<T> &lSource)
    3.     {
    4.         CNode<T> *p,*X;
    5.         CList<T> l1,l2;
    6.  
    7.         if(lSource.pHead == lSource.pTail)
    8.             return;
    9.         l1.pHead = l1.pTail = NULL;
    10.         l2.pHead = l2.pTail = NULL;
    11.  
    12.         X = lSource.pHead;
    13.         lSource.pHead = X->pNext;
    14.        
    15.         while(lSource.pHead != NULL)
    16.         {
    17.             p = lSource.pHead;
    18.             lSource.pHead = p->pNext;
    19.             p->pNext = NULL;
    20.             if(p->data < X->data)
    21.                 l1.Insert(p);
    22.             else
    23.                 l2.Insert(p);
    24.         }
    25.  
    26.         QSort(l1);
    27.         QSort(l2);
    28.  
    29.         if(l1.pHead != NULL)
    30.         {
    31.             lSource.pHead = l1.pHead;
    32.             l1.pTail->pNext = X;
    33.         }
    34.         else
    35.             lSource.pHead = X;
    36.  
    37.         X->pNext = l2.pHead;
    38.  
    39.         if(l2.pHead != NULL)
    40.             lSource.pTail = l2.pTail;
    41.         else
    42.             lSource.pTail = X;
    43.     }

  3. #3
    Ngày gia nhập
    09 2008
    Nơi ở
    TP HCM
    Bài viết
    7

    mình muốn dùng bubble sort. bạn cho mình code đi. Thanks

    chỉ sắp List đã có sẵn, không chèn thêm vào, xuất ra từ lớn đến bé

  4. #4
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Mình đã cố tình đưa cho bạn code một hàm Sort rồi(cố chỉ cho ý tưởng nó rõ hơn chứ chưa chạy được), bạn dựa vào ý tưởng của các phép sort và ý tưởng của bài trên để có thể làm với các thuật giải khác mà.

    Nếu bạn code chưa ra có thể đưa ra đây mọi người sửa và hướng dẫn cho. còn cho code thì mình không thể vì đây là qui định của diễn đàn.

    ps: bạn không post 2 bài liên tiếp nhau nếu tái phạm mình sẽ move đi đó. Bạn có thể sử dụng chức năng Sửa để cần mỗi lần bổ sung thêm một ý nào đó. _^-^ _

  5. #5
    Ngày gia nhập
    09 2008
    Nơi ở
    TP HCM
    Bài viết
    7

    C Code:
    1. void Sort(tokenList *pList) {
    2.  tokenList * a = NULL;
    3.  tokenList * b = NULL;
    4.  tokenList * c = NULL;
    5.  tokenList * e = NULL;
    6.  tokenList *tmp = NULL;
    7.  
    8.  
    9.  // the `c' node precedes the `a' and `e' node
    10.  // pointing up the node to which the comparisons
    11.  // are being made.
    12.  
    13.  while(e != pList->pNext) {
    14.  c = a = pList;
    15.  b = a->pNext;
    16.   while(a != e) {
    17.    if(a->nToken > b->nToken) {//>
    18.     if(a == pList) {
    19.      tmp = b ->pNext;
    20.      b->pNext = a;
    21.      a->pNext = tmp;
    22.      pList = b;
    23.      c = b;
    24.     } else {
    25.      tmp = b->pNext;
    26.      b->pNext = a;
    27.      a->pNext = tmp;
    28.      c->pNext = b;
    29.      c = b;
    30.     }
    31.    } else {
    32.     c = a;
    33.     a = a->pNext;
    34.    }
    35.    b = a->pNext;
    36.    if(b == e)
    37.     e = a;
    38.   }
    39.  }
    40. }
    bạn sửa dùm mình , nó sort từ bé đến lớn, mình cần ngược lại


    Lưu ý: Bỏ code vào tag code
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 08-10-2008 lúc 11:34 AM.

  6. #6
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Mặc định Sắp Xếp danh sách liên kết (DSLK) từ lớn đến nhỏ như thế nào?

    Nếu mà nó đã sort từ bé đến lớn được rùi không có vấn đề gì nếu bạn muốn sort ngược lại cả (đảm bảo code này bạn chôm được ở đâu đó).

    giờ muốn nó sort lại theo ý bạn chỉ cần sửa dấu của phép toán so sánh là được.
    C Code:
    1. if(a->nToken < b->nToken) // sửa lại dấu so sánh là được thôi mà.

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

  1. Bài tập C Tạo danh sách liên kết các số nguyên tố từ danh sách L (dslk đơn)
    Gửi bởi pato24193 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: 16-12-2012, 02:47 PM
  2. Trả lời: 5
    Bài viết cuối: 13-12-2012, 02:54 PM
  3. DSLK | Danh sách liên kết trên C| Xoá phần tử ở sau phần tử q
    Gửi bởi 7261819 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 24-06-2009, 05:48 AM
  4. Danh sách liên kết | Chèn vào đầu, và chèn vào cuối DSLK trên C???
    Gửi bởi sonas 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: 18-05-2009, 03:39 PM
  5. Danh sách liên kết. Giúp mình bài về DSLK!
    Gửi bởi thangtcnb 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: 20-12-2007, 08:27 AM

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