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

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

Đ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++ Cài đặt: NODE *TimChanCuoi(LIST l) { NODE *p=l.pHead, *pChanCuoi=NULL; while(p) { if(p->Key%2==0) pChanCuoi=p; p=p->pNext; } return pChanCuoi; } 1.5. Tìm phần tử có giá trị max (min) thỏa điều kiện cho trước (Giả sử tìm phần tử có giá trị chẵn lớn nhất trên danh sách số nguyên) (SV tự vẽ hình minh họa) - Đầu vào: DSLK đơn l - Kết quả: Trả về con trỏ chứa giá trị chẵn lớn nhất (hoặc NULL: Nếu không có chẵn) - Giải thuật: B1: pMaxChan là phần tử chẵn đầu tiên của danh sách Nếu không có chẵn trả về NULL. Kết thúc B2: p trỏ vào sau pMaxChan B3: Nếu p trỏ đến NULL thì trả về pMaxChan. Kết thúc Ngược lại sang B4 B4: Nếu giá trị của p là chẵn và lớn hơn giá trị pMaxChan thì Gán pMaxChan = p B5: p trỏ đến phần tử kế tiếp, quay lại B3 - Cài đặt: NODE *TimMaxChan(LIST l) { NODE *pMaxChan=TimChanDau(l), *p; if(pMaxChan==NULL) return NULL; p=pMaxChan->pNext; while(p) { if(p->Key%2==0&&p->Key>pMaxChan->Key) pMaxChan=p; p=p->pNext; } return pMaxChan; } 1.6. Tìm phần tử đứng trước phần tử p cho trước (SV tự vẽ hình minh họa) - Đầu vào: DSLK đơn l, phần tử p - Kết quả: Trả về con trỏ đứng trước phần tử p (hoặc NULL: Nếu không có) - Giải thuật: *Trường hợp 1: Nếu p trỏ vào đầu danh sách thì trả về NULL *Trường hợp 2: Ngược lại trường hợp 1 B1: pTruoc trỏ và đầu danh sách B2: Trong khi pTruoc trỏ đến phần tử kế chưa bằng p thì Dời pTruoc sang phần tử kế tiếp B3: Trả về pTruoc. Kết thúc - Cài đặt: NODE *TimNodeTruocp(LIST l, NODE *p) { if(p==l.pHead) return NULL; NODE *pTruoc=l.pHead; while(pTruoc->pNext!=p) pTruoc=pTruoc->pNext; return pTruoc; } 2. Duyệt 2.1. Xuất danh sách (SV tự vẽ hình minh họa) - Đầu vào: DSLK đơn l - Kết quả: In giá trị các phần tử của danh sách ra màn hình - Giải thuật: B1: p trỏ và đầu danh sách B2: Nếu p = NULL thì kết thúc Ngược lại In giá trị p B3: p trỏ đến phần tử kế tiếp, quay lại B2 - Cài đặt: (Giả sử l là danh sách số nguyên) void Xuat(LIST l) { NODE *p=l.pHead; while(p) { printf(“%d->”, p->Key); p=p->pNext; } } 2.2. Xuất danh sách thỏa điều kiện cho trước (SV tự vẽ hình minh họa) - Đầu vào: DSLK đơn l - Kết quả: In giá trị các phần tử của danh sách thỏa điều kiện ra màn hình - Giải thuật: B1: p trỏ vào đầu danh sách B2: Nếu p = NULL thì kết thúc B3: Nếu giá trị của p thỏa điều kiện thì in giá trị p B4: p trỏ đến phần tử kế tiếp, quay lại B2 - Cài đặt: (Giả sử xuất các giá trị có giá trị chẵn trong danh sách số nguyên) void XuatChan(LIST l) { NODE *p=l.pHead; while(p) { if(p->Key%2==0) printf(“%d->”, p->Key); p=p->pNext; } } . CÁC THAO TÁC TRÊN DANH SÁCH LIÊN KẾT ĐƠN C++ Cài đặt: NODE *TimChanCuoi(LIST l) { NODE *p=l.pHead, *pChanCuoi=NULL;. Xuất danh sách (SV tự vẽ hình minh họa) - Đầu vào: DSLK đơn l - Kết quả: In giá trị các phần tử của danh sách ra màn hình - Giải thuật: B1: p trỏ và đầu danh sách B2:. } } 2.2. Xuất danh sách thỏa điều kiện cho trước (SV tự vẽ hình minh họa) - Đầu vào: DSLK đơn l - Kết quả: In giá trị các phần tử của danh sách thỏa điều kiện ra

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