CÁC THAO TÁC TRÊN DANH SÁCH LIÊN KẾT ĐƠN C++
lượt xem 97
download
CÁC THAO TÁC TRÊN DANH SÁCH LIÊN KẾT ĐƠN C++ thêm, sửa, xóa các phân tử trong danh sách liên kết đơn
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: CÁC THAO TÁC TRÊN DANH SÁCH LIÊN KẾT ĐƠN C++
- 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)//Trường hợp danh sách có 1 phần tử l.pTail=NULL; } } 6.2. Xóa phần tử cuối (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ử cuối - Giải thuật:
- *Trường hợp 1: Nếu l rỗng thì kết thúc *Trường hợp 2: Nếu danh sách có một phần tử thì xóa đầu Ngược lại: B1: pTruoc là con trỏ đứng trước con trỏ cuối của danh sách B2: Cho pTruoc trỏ kế tiếp tới NULL B3: Xóa con trỏ cuối B4: Gán con trỏ cuối 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 phần tử p cho trước (SV tự vẽ hình minh họa) ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ...........................................................................................................................................
- ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... - Đầu vào: DSLK đơn l, node p cần xóa - Kết quả: DSLK đơn l sau khi xóa p - Giải thuật: *Trường hợp 1: Nếu p là con trỏ đầu thì xóa đầu *Trường hợp 2: Nếu p là con trỏ cuối thì xóa cuối Ngược lại: 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 phần tử đứng trước phần tử cho trước (SV tự vẽ hình minh họa) ........................................................................................................................................... ........................................................................................................................................... ...........................................................................................................................................
- ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ..................................................................................................................... ...................... - Đầu vào: DSLK đơn l, node p để xác định node cần xóa - Kết quả: DSLK đơn l sau khi xóa trước phần tử p - Giải thuật: *Trường hợp 1: Nếu p là con trỏ đầu thì kết thúc *Trường hợp 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 phần tử đứng sau phần tử cho trước (SV tự vẽ hình minh họa) ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ...........................................................................................................................................
- ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... - Đầu vào: DSLK đơn l, node p để xác định node cần xóa - Kết quả: DSLK đơn l sau khi xóa phần tử sau p - Giải thuật: *Trường hợp 1: Nếu p là con trỏ cuối thì kết thúc *Trường hợp 2: (p khác con trỏ cuối) 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.Hủy toàn bộ danh sách (SV tự vẽ hình minh họa) ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... - Đầu vào: DSLK đơn l - Kết quả: DSLK đơn l sau khi hủy (rỗng)
- - Giải thuật: Trong khi con trỏ đầu khác NULL thì xóa đầu - Cài đặt: void Huy(LIST &l) { while(l.pHead) XoaDau(l); }
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình Tin học văn phòng: Microsoft Excel - Hoàng Vũ Luân
74 p | 1032 | 433
-
Bài giảng Microsoft Excel: Hệ xử lý bằng bảng tính Microsoft Excel - ĐH Sư phạm Huế
102 p | 123 | 21
-
Bài giảng Tin học ứng dụng - Hệ xử lý bảng tính Microsoft excel
102 p | 115 | 17
-
Tài liệu hướng dẫn thực hành môn Cấu trúc dữ liệu và giải thuật - Bài 2: Danh sách liên kết
5 p | 173 | 12
-
bai-giang-ky-thuat-lap-trinh-danh-sach-lien-ket
20 p | 111 | 10
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 2: Các cấu trúc dữ liệu cơ bản
76 p | 83 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu cơ bản - ĐH KHTN TPHCM
38 p | 79 | 7
-
Bài giảng Danh sách liên kết - ĐH Tôn Đức Thắng
59 p | 60 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3.1 - Trần Minh Thái
66 p | 82 | 6
-
Giáo trình hướng dẫn phân tích hàm Input new data để tách một list thành nhiều danh sách p10
5 p | 58 | 5
-
Bài giảng môn Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu cơ bản
75 p | 12 | 5
-
Giáo trình phân tích quy trình sử dụng hàm Input new data để tách một list thành nhiều danh sách p9
5 p | 74 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Danh sách - Nguyễn Đức Cương
23 p | 90 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 4.1 - Trần Minh Thái (2016)
57 p | 65 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - Đỗ Ngọc Như Loan
84 p | 51 | 3
-
Bài giảng Cấu trúc dữ liệu & giải thuật: Các cấu trúc dữ liệu cơ bản
39 p | 30 | 3
-
Bài giảng Kỹ thuật lập trình: Danh sách liên kết - Nguyễn Minh Huy
19 p | 9 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn