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