30/09/2018, 16:52

Danh Sách liên kết

Hiện tại em đang làm bài trong sách mà ngồi mấy tiếng ko biết sai chỗ nào ở Hàm tách 1 DSLK thành 2 cái ? Nên mạn phép lên trang để hỏi . Mong mọi người giúp đỡ
Em chỉ xin nêu ra chỗ em sai

void O_put_3(List l,List &A,List &B){ // tach 1 DSLK thanh 2 danh sack lien ket
    So *DanhSach; DanhSach = l.Head;
    int dem = 0;
    while(DanhSach != NULL){
        if(dem % 2 == 0){
            if(A.Head == NULL){
                So *temp_1 = DanhSach;
                temp_1->pNext = NULL;
                A.Head = A.Tail = temp_1;
            }
            else{
                So *temp_1 = DanhSach;
                temp_1->pNext = (So *)malloc(sizeof(So));  temp_1->pNext = NULL;
                A.Tail->pNext = temp_1;
                A.Tail = temp_1;
            }
        }
        else{
            if(B.Head == NULL){
                So *temp_2 = DanhSach;
                temp_2->pNext = NULL;
                B.Head = B.Tail = temp_2;
            }
            else{
                So *temp_2 = DanhSach;
                temp_2->pNext = (So *)malloc(sizeof(So));  
                temp_2->pNext = NULL;
                B.Tail->pNext = temp_2;
                B.Tail = temp_2;
            }
        }
        dem++;
        DanhSach = DanhSach->pNext;
    }
/*A.Tail->pNext = NULL;
B.Tail->pNext = NULL;*/
}

Em chân thành cảm ơn mọi người đã xem topic này !
Học

Nguyễn Minh Dũng viết 19:02 ngày 30/09/2018

Hàm tách 1 DSLK thành 2 cái

Em muốn tách như thế nào?

Minh Hoàng viết 19:07 ngày 30/09/2018

bạn ấy muốn tách xen kẽ, phần tử vị trí chẵn vào A, phần tử vị trí lẻ vào B

		temp_1->pNext = (So *)malloc(sizeof(So));  
                temp_1->pNext = NULL;

hình như chỗ này hơi kì, tạo ra rồi lại bỏ đi

Nguyễn Minh Dũng viết 18:58 ngày 30/09/2018

Vậy thì vẫn thiếu thông tin qúa, So, List có cấu trúc như thế nào còn chưa biết

BaoLe viết 19:07 ngày 30/09/2018
http://docs.vietnamdoc.net/Data/Soft/2008/08/04/CTDLGT_LT.pdf

Hình như tài liệu này có thể giải đáp được phần bạn đang thắc mắc.

Thai Hoc Nguyen viết 19:02 ngày 30/09/2018

tại lúc đầu danh sách nó trỏ tới tiếp phía sau mình chỉ cho nó trỏ về NULL thôi

Thai Hoc Nguyen viết 18:54 ngày 30/09/2018
Struct So{
    void *InFor;
   struct So *pNext;
};

Struct List{
        So *Head;
       So *Tail;
};

cái void* là do trong sách nó biểu em cần phải làm thế ! @@ em ko hiểu sao nữa

Minh Hoàng viết 18:55 ngày 30/09/2018
            temp_2 = (So *)malloc(sizeof(So));  //khởi tạo
            temp_2->pNext = NULL;  //gán NULL, vì chưa có phần tử tiếp theo
Thai Hoc Nguyen viết 18:58 ngày 30/09/2018

Sorry Hoàng ! cảm ơn Hoàng đã sửa lại comment

Nguyễn Minh Dũng viết 19:06 ngày 30/09/2018

Dùng void* cũng được, bởi vì con trỏ void* có thể trỏ tới bất kỳ kiểu dữ liệu nào @Thai_Hoc_Nguyen

Bài liên quan
0