CÁC THAO TÁC TRÊN DANH
SÁCH LIÊN KẾT ĐƠN C++
- Cài đặt:
void XoaDau(LIST &l)
{
if(l.pHead!=NULL)
{
NODE *pXoa=l.pHead;
l.pHead=l.pHead->pNext;
delete pXoa;
if(l.pHead==NULL)//Tng hp danh sách có 1 phn t
l.pTail=NULL;
}
}
6.2. Xóa phn t cui
(SV t vnh minh ha)
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
- Đầu vào: DSLK đơn l
- Kết quả: DSLK đơn l sau khi xóa phần t cui
- Gii thut:
*Trường hp 1: Nếu l rng thì kết thúc
*Trường hp 2: Nếu danh sách có mt phn t thì xóa đầu
Ngược li:
B1: pTruoc là con tr đứng trước con tr cui ca danh sách
B2: Cho pTruoc tr kế tiếp ti NULL
B3: Xóa con tr cui
B4: Gán con tr cui là pTruoc
- Cài đặt:
void XoaCuoi(LIST &l)
{
if(l.pHead!=NULL)
{
if(l.pHead==l.pTail)
XoaDau(l);
else
{
NODE *pTruoc=TimNodeTruocp(l, l.pTail);
pTruoc->pNext=NULL;
delete l.pTail;
l.pTail=pTruoc;
}
}
}
6.3. Xóa phn t p cho trưc
(SV t vnh minh ha)
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
- Đầu vào: DSLK đơn l, node p cần xóa
- Kết quả: DSLK đơn l sau khi xóa p
- Gii thut:
*Trường hp 1: Nếu p là con tr đu thì xóa đầu
*Trường hp 2: Nếu p là con tr cui thì xóa cui
Ngược li:
B1: pTruoc là con tr đứng trước p
pSau là con tr đứng sau p
B2: Xóa p
B3: Cho pTruoc tr vào pSau
- Cài đặt:
void Xoap(LIST &l, NODE *p)
{
if(p==l.pHead)
XoaDau(l);
else if(p==l.pTail)
XoaCuoi(l);
else
{
NODE *pTruoc=TimNodeTruocp(l, p);
NODE *pSau = p->pNext;
delete p;
pTruoc->pNext = pSau;
}
}
6.4. Xóa phn t đứng trước phn t cho trước
(SV t vnh minh ha)
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
.....................................................................................................................
......................
- Đầu vào: DSLK đơn l, node p để c định node cn xóa
- Kết quả: DSLK đơn l sau khi xóa trước phn t p
- Gii thut:
*Trường hp 1: Nếu p là con tr đu thì kết thúc
*Trường hp 2: (p khác con tr đầu)
B1: pTruoc là con tr đứng trước p
B2: Xóa pTruoc
- Cài đặt:
void XoaTruocp(LIST &l, NODE *p)
{
if(p!=l.pHead)
{
Trang
NODE *pTruoc=TimNodeTruocp(l, p);
Xoap(pTruoc);
}
}
6.5. Xóa phn t đng sau phn t cho trước
(SV t vnh minh ha)
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
- Đầu vào: DSLK đơn l, node p để c định node cn xóa
- Kết quả: DSLK đơn l sau khi xóa phần t sau p
- Gii thut:
*Trường hp 1: Nếu p là con tr cui thì kết thúc
*Trường hp 2: (p khác con tr cui)
B1: pSau là con tr đứng sau p
B2: Xóa pSau
- Cài đặt:
void XoaSaup(LIST &l, NODE *p)
{
if(p!=l.pTail)
{
NODE *pSau=p->pNext;
Xoap(pSau);
}
}
6.6.Hy toàn b danh sách
(SV t vnh minh ha)
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
- Đầu vào: DSLK đơn l
- Kết quả: DSLK đơn l sau khi hủy (rng)