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

Đề tài: Danh sách Liên kết đơn

  1. #1
    Ngày gia nhập
    04 2017
    Bài viết
    1

    Mặc định Danh sách Liên kết đơn

    Em đang học về cấu trúc dữ liệu và đây là hàm hoán vị hai vị trí trong danh sách liên kết đơn và nó k chạy :(((( các pro có thể chia sẻ cách nào để em có thể hoàn thành đoạn code này không ạ???

    Code:
    void swap(Position p,Position q,List L){
    	T->Next=p;
    	p->Next=q->Next;
    	q->Next=T;
    }
    void SORT(List& L){
    	Position p= FIRST(L); // begin at first element 
    	p=p->Next;
    	while (p!=ENDLIST(L)){
    		Position  q=NEXT(p,L); // get the following of position p  
    		while (q!=ENDLIST(L)){
    			if (RETRIEVE(p,L) > RETRIEVE(q,L)) {
    			swap(p,q,L); // swap two element
    		}
    			q=NEXT(q,L);
    		}
    		p=NEXT(p,L);
    }
    }

  2. #2
    Ngày gia nhập
    06 2017
    Bài viết
    40

    Cho xem cấu trúc Position ,List đi.
    Có thể bạn bị chổ này:
    1) void swap(Position p,Position q,List L): L thường là con trỏ. vd: List *L
    2) T->Next=p; //T có thấy khai báo đâu

  3. #3
    Ngày gia nhập
    07 2016
    Nơi ở
    Hà Nội
    Bài viết
    211

    Cái này bạn phải ngồi vẽ ra sơ đồ cho dễ hình dung rồi code nhé
    NHẬN CODE THUÊ ĐỒ ÁN - BÀI TẬP LỚN
    TẤT CẢ CÁC NGÔN NGỮ LẬP TRÌNH. HOÀN THÀNH NHANH CHÓNG, HIỆU QUẢ
    Số điện thoại: 01629732025 Email: codethuexyz@gmail.com facebook https://www.facebook.com/codethuedoancntt

  4. #4
    Ngày gia nhập
    04 2017
    Bài viết
    15

    1. Bạn sai ở đây. Tham số p và q mà bạn truyền vào là tham trị, nó sẽ KHÔNG thay đổi khi kết thúc hàm.
    2. Tham số L là thừa, không cần thiết.
    3. Để sửa lại bạn truyền vào tham chiếu Position & (trong C++) hoặc truyền vào con trỏ Position* (trong C).

    C++ Code:
    1. //Sai ở đây
    2. void swap(Position p,Position q, List L)
    Thuê code đồ án, bài tập, tools. phần mềm liên hệ:
    Facebook: http://www.facebook.com/thuecodedoan
    Website: https://thuecodedoan.wordpress.com
    Email: thuecodedoan@gmail.com
    Sđt: 094.76.76.854

  5. #5
    Ngày gia nhập
    01 2013
    Bài viết
    1,463

    Phải biết node trước đó nữa thì mới trỏ đúng được. Người ta swap data chứ swap luôn cái cấu trúc bên dưới e là dễ hỏng.

  6. #6
    Ngày gia nhập
    02 2016
    Bài viết
    259

    Mặc định Danh sách Liên kết đơn

    Có hai cách để hoán đổi. Cách thứ nhất là hoán đổi phần dữ liệu, và giữ lại phần con trỏ. Cách thứ hai là giữ lại phần dữ liệu, và hoán đổi các con trỏ; gồm hai cặp con trỏ, một cặp là con trỏ vào hai node này và cặp kia trỏ vào hai node kế tiếp.

    Prototype hàm của bạn bắt buộc phải dùng cách thứ nhất. Nhưng để có thể copy ra node tạm, bạn cần phải biết kiểu của struct
    void swap(Position p,Position q){ // List L không cần, bạn có thể bỏ
    structGiDo r = *p;
    *p = *q;
    *q = *r;
    // code trên hoán đổi cả con trỏ ké tiếp, bây giờ cần hoán trở lại
    p->Next=q->Next;
    q->Next=r.Next;
    }

    Nếu muốn dùng cách thứ hai, bạn phải đổi prototype
    C++:
    void swap(Position &p,Position &q){
    Position r = p;
    p = q;
    q = r;
    r = p->Next;
    p->Next=q->Next;
    q->Next=r;
    }

    C:
    void swap(Position *p,Position *q){ // con trỏ vào con trỏ node
    Position r = *p;
    *p = *q;
    *q = r;
    r = (*p)->Next;
    (*p)->Next=(*q)->Next;
    (*q)->Next=r;
    }

    Với code C, cũng phải đổi cách gọi trong hàm SORT:
    swap(&p,&q);

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