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

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

Đang tải... (xem toàn văn)

Thông tin tài liệu

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 . 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. 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. 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:

Ngày đăng: 28/07/2014, 17:22

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan