1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

5 597 1
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 138,04 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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)

Trang 2

- Đầ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;

}

Trang 3

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;

}

Trang 4

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;

}

}

Trang 5

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;

}

}

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

TỪ KHÓA LIÊN QUAN

w