Tải bản đầy đủ (.pdf) (5 trang)

CÁC THAO TÁC TRÊN DANH SÁCH LIÊN KẾT ĐƠN C++ ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (131.85 KB, 5 trang )

CÁC THAO TÁC TRÊN DANH
SÁCH LIÊN KẾT ĐƠN C++

5. Thêm
5.1. Thêm phần tử vào đầu danh sách
(SV tự vẽ hình minh họa)












- Đầu vào: DSLK đơn l, phần tử p cần thêm
- Kết quả: DSLK đơn l sau khi thêm
- Giải thuật:
*Trường hợp 1: Nếu l rỗng thì
Con trỏ đầu và cuối của danh sách = p
*Trường hợp 2: (l khác rỗng)
B1: p trỏ kế tiếp vào đầu danh sách
B2: Gán con trỏ đầu = p
- Cài đặt:

void ThemDau(LIST &l, NODE *p)
{
if(l.pHead==NULL)


l.pHead=l.pTail=p;
else
{
p->pNext = l.pHead;
l.pHead = p;
}
}
5.2. Thêm phần tử vào cuối danh sách
(SV tự vẽ hình minh họa)













- Đầu vào: DSLK đơn l, phần tử p cần thêm
- Kết quả: DSLK đơn l sau khi thêm
- Giải thuật:
*Trường hợp 1: Nếu l rỗng thì
Con trỏ đầu và cuối của danh sách = p
*Trường hợp 2: (l khác rỗng)
B1: Con trỏ cuối của danh sách trỏ kế tiếp vào p
B2: Gán con trỏ cuối = p

- Cài đặt:

void ThemCuoi(LIST &l, NODE *p)
{
if(l.pHead==NULL)
l.pHead=l.pTail=p;
else
{
l.pTail->pNext =p;
l.pTail = p;
}
}

5.3. Thêm phần tử vào sau một phần tử cho trước
(SV tự vẽ hình minh họa)













- Đầu vào: DSLK đơn l, phần tử k cần thêm và phần tử p
- Kết quả: DSLK đơn l sau khi thêm k sau p

- Giải thuật:
*Trường hợp 1: Nếu p là con trỏ cuối của danh sách thì
Thêm k vào cuối danh sách l
*Trường hợp 2: (p khác con trỏ cuối)
B1: pSau là con trỏ đứng sau p
B2: Cho p trỏ tới k
B3: Cho k trỏ tới pSau
- Cài đặt:

void ThemkSaup(LIST &l, NODE *p, NODE *k)
{
if(p==l.pTail)
ThemCuoi(l, k);
else
{
NODE *pSau = p->pNext;
p->pNext = k;
k->pNext = pSau;
}
}

5.4. Thêm phần tử k vào trước một phần tử p cho trước
(SV tự vẽ hình minh họa)














- Đầu vào: DSLK đơn l, phần tử k cần thêm và phần tử p
- Kết quả: DSLK đơn l sau khi thêm k trước p
- Giải thuật:
B1: Thêm k vào sau p
B2: Hoán vị giá trị của p và k
- Cài đặt:

void ThemkTruocp(LIST &l, NODE *p, NODE *k)
{
ThemkSaup(l, p, k);
int tam = p->Key;
p->Key = k->Key;
k->Key = tam;
}

6. Xóa
6.1. Xóa phần tử đầu
(SV tự vẽ hình minh họa)














- Đầu vào: DSLK đơn l
- Kết quả: DSLK đơn l sau khi xóa phần tử đầu
- Giải thuật:
*Trường hợp 1: Nếu l rỗng thì kết thúc
*Trường hợp 2: (l khác rỗng)
B1: pXoa là con trỏ đầu của danh sách
B2: Cho con trỏ đầu trỏ vào phần tử kế tiếp
B3: Xóa pXoa
B4: Nếu con trỏ đầu = NULL thì gán con trỏ cuối = NULL

×