Khởi tạo danh sách

Một phần của tài liệu Tài liệu Xây dựng chức năng tìm kiếm và sắp xếp trên mảng cấu trúc (Trang 37 - 42)

CHƯƠNG 3 TÌM KIẾẾM VÀ SẮẾP XẾẾP TRẾN DANH SÁCH LIẾN KẾẾT

3.3. Khởi tạo danh sách

3.3.1. Chương trình con

Khi mới khởi tạo, danh sách rổng, do đó con trỏ head và tail sẽ khơng trỏ vào đâu cả, nên sẽ gán chúng bằng NULL.

//ctc khoi tao danh sach

void init_list(danhsachkh *khlist)

khlist->head = NULL; khlist->tail = NULL; };

3.4. Tạo phần tử danh sách

3.4.1. Chương trình con

Thực hiện đóng gói thơng tin của phần tử kèm theo con trỏ để tạo node. // ctc tao node khach hang

khnodetype *get_kh(KhachHang *kh) {

khnodetype *p;// khoi tao con tro p p = new khnodetype;

if (p != NULL)// dieu kien p khac NULL {

p->infor = kh; p->next = NULL; }return p;// tra ve bien p }

3.5. Nhập danh sách khách hàng

3.5.1. Chương trình con

Để nhập danh sách khách hàng ta sử dụng 3 chương trình con

 void addfirst(danhsachkh *khlist, khnodetype *n): hỗ trợ thêm 1

node vào đầu danh sách.

 void nhapkh(KhachHang *kh): nhập thông tin của một khách hàng

gồm: mã khách hàng, họ, tên, năm quản lý, điểm tích luỹ, doanh số.

 void nhapDsKh(KhachHang *kh, danhsachkh *ds): hỗ trợ nhập

danh sách khách hàng.

// them node khach hang vao dau danh sach

void addfirst(danhsachkh *khlist, khnodetype *n)

{ if (khlist->head == NULL) { khlist->head = n; khlist->tail = khlist->head; } else { n->next = khlist->head; khlist->head = n; }

// nhap thong tin 1 nhan vien

{

cout << "nhap makh: "; rewind(stdin);

cin.getline(kh->MaKH, 5); cout << "nhap ho: ";

rewind(stdin);

cin.getline(kh->Ho, 30); cout << "nhap ten: "; cin.getline( kh->Ten,8); cout << "nhap nam: "; cin.getline(kh->Nam,5); cout<< "nhap diem tich luy: "; cin>>kh->Diem;

cout<< "nhap doanh so: "; cin>>kh->Doanhso; }

// nhap thong tin danh sach

void nhapDsKh(KhachHang *kh, danhsachkh *ds)

{

char t='c'; int i=1;

// tao vong lap khi nhap thong tin khach hang ket thuc khi nhap xong while (t == 'C' || t == 'c')

{

kh = new KhachHang;

cout << " nhap thong tin khach hang thu " << i++ << endl; nhapkh(kh);// nhap thong tin tung khach hang

khnodetype *n; n= new khnodetype;

n=get_kh(kh);// tao them node thong tin khach hang addfirst(ds, n);// them vao 1 phan tu o cuoi danh sach

cout << "Nhap tiep (c/k): ";// hoi moi khi nhap xong 1 khach hang cin >> t;

} }

Hình 3.14: Hình ảnh kết quả chạy hàm nhập danh sách khách hàng.

3.6. Xuất danh sách khách hàng

3.6.1. Chương trình con

Để xuất danh sách khách hàng ta sử dụng 2 chương trình con:

void xuatkh(KhachHang *kh): hỗ trợ xuất thôngtin của 1 khách hàng. void xuatds(danhsachkh *khlist): hỗ trợ xuất thông tin danh sách khách

hàng.

//xuat thong tin 1 khach hang

void xuatkh(KhachHang *kh) { cout << "\t" << kh->MaKH; cout << "\t" << kh->Ho; cout << "\t" << kh->Ten; cout << "\t" << kh->Nam; cout << "\t" << kh->Diem; cout << "\t" << kh->Doanhso; cout << endl; }

// xuat thong tin danh sach khach hang

void xuatds(danhsachkh *khlist)

{

khnodetype *p; p = khlist->head; int i = 1;

cout <<"stt\t"<<"maKH\t\t" << "ho\t\t" <<"ten\t\t"<< "nam\t\t" << "diem\t" <<"doanh so\t"<< endl;

while (p != NULL) {

cout << i ; i++; xuatkh(p->infor); cout << "\n";

p = p->next; }

}

3.6.2. Kết quả chạy

Hình 3.15: HÌnh ảnh kết quả chạy xuất danh sách khách hàng.

3.7. Đếm số khách hàng có trong danh sách

3.7.1. Chương trình con

// ctc dem so phan tu co trong danh sach

void countlist(danhsachkh *khlist)

{

p = khlist->head;

while (p != NULL)

{

count++;// tang bien const sau moi lan lap p = p->next;

}

cout << count;// xuat bien const }

3.7.2. Kết quả chạy

Hình 3.16: Hình ảnh kết quả chạy đếm số khách hàng có trong danh sách là.

Một phần của tài liệu Tài liệu Xây dựng chức năng tìm kiếm và sắp xếp trên mảng cấu trúc (Trang 37 - 42)

Tải bản đầy đủ (PDF)

(60 trang)