[CTDL & Thuật Toán] Thêm phần tử vào Vị trí bất kỳ

0

Giả sử chúng ta cần chèn một nút mới(NewNode) vào giữa nút K (nút trái) và G (nút phải).

1.Đầu tiên, ta khai báo NewNode

+Đổ dữ liệu vào trường Data của NewNode

+cho con trỏ Next của nó trỏ vào Node kế tiếp của k  ( NodeMoi->next = k->next;)

2.Sau đó cho con trỏ next của k trỏ vào NewNode (k->Next = newnode).

void Them_VT_BatKy(DanhSach &DS,int k,SinhVien x)
{
	  if (k<1 || k>DodaiDS(DS)) printf("Vi tri Thêm khong hop le !"); 
        if(k==1) //neu la vi tri dau==>chen vao dau
        {
            ThemDau(DS,x);
        }
        else //chen vao vi tri [k !=1,k->n]
        {
            //vi tri KHAC k-1 thi duoc duyet, DUYET DEN VI TRI =K-1 thi DUNG VONG LAP
            NODE *T = DS.NodeDAU;//luc dau,Node T dang o vi tri DAU DS
            for (int i = 1; i !=k-1; i++){
                T = T->next;
            }//KET THUC VONG LAP,Node T Dang O VI TRI thu K-1 trong DS
            //TAO 1 NODE MOI VA GAN GIA TRI 
            NODE *NodeMoi = new NODE;
            NodeMoi->data = x;
            NodeMoi->next = T->next;//NodeMoi lk voi node sau vi tri k (T[next])
            
            T->next = NodeMoi;//Node tai vi tri K lien ket voi NodeMoi
        }
}

Leave A Reply

Your email address will not be published.