Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
lồng 2 dách liên kết đơn vào nhau, danh sách Loại hàng hóa chứa danh sách hàng hóa. Ai giúp với, mình viết tới đó làm như thế nào nữa ạ ?
#include <iostream>
#include <conio.h>
using namespace std;
//1 khai bao data
struct NodeHangHoa{
char MaHH[20];
char NgayHH[20];
char TenHH[50];
float GiaHH;
struct NodeHangHoa *pNext_HH;
};
struct NodeLoaiHangHoa{
char MaLHH[20];
char TenLHH[50];
struct NodeHangHoa *pNext_HH;// ve viet ham gan node hang hoa vao loai hang hoa
struct NodeLoaiHangHoa *pNext_LHH;
};
struct ListHangHoa{
NodeHangHoa *pHead_HH, *pTail_HH;
};
struct ListLoaiHangHoa{
NodeLoaiHangHoa *pHead_LHH, *pTail_LHH;
};
//2 khoi tao danh sach lien ket don
void CreateListHH(ListHangHoa &L)
{
L.pHead_HH = L.pTail_HH = NULL;
}
void CreateListLHH(ListLoaiHangHoa &L)
{
L.pHead_LHH = L.pTail_LHH = NULL;
}
//3 tao node trong danh sach, dua du lieu vao khai bao
NodeLoaiHangHoa* CreateLoaiHangHoa(char TenLHH[], char MaLHH[])
{
//cap phat bo nho dem;
NodeLoaiHangHoa *p = new NodeLoaiHangHoa;
//truong hop may tinh het bo nho
if (p == NULL)
{
return NULL;
}
strcpy(p->MaLHH, MaLHH);//luu mahh vao data
strcpy(p->TenLHH, TenLHH);//luu tenhh vao data
p->pNext_LHH = NULL; // khoi tao moi lien ket
}
NodeHangHoa* CreateHangHoa(char MaHH[], char NgayHH[], char TenHH[], int GiaHH)
{
//cap phat bo nho dem;
NodeHangHoa *p = new NodeHangHoa;
//truong hop may tinh het bo nho
if (p == NULL)
{
return NULL;
}
strcpy(p->MaHH, MaHH);//luu mahh vao data
strcpy(p->NgayHH, NgayHH);
strcpy(p->TenHH, TenHH);//luu tenhh vao data
p->GiaHH = GiaHH;//luu Giahh vao data
p->pNext_HH = NULL; // khoi tao moi lien ket
}
//4 them vao danh sach ( them dau hoac them cuoi)
//them dau danh sach
void AddHead_LHH(ListLoaiHangHoa &L, NodeLoaiHangHoa *p)
{
if (L.pHead_LHH == NULL)//tuc danh sach bi rong
{
L.pHead_LHH = L.pTail_LHH = p;//danh sach nay vua la dau vua la cuoi;
}
else
{
p->pNext_LHH = L.pHead_LHH;// p quang day de tham gia vao danh sach p
L.pHead_LHH = p;// p chinh thuc dung dau danh sach
}
}
void AddHead_HH(ListHangHoa &L, NodeHangHoa *p)
{
if (L.pHead_HH == NULL)//tuc danh sach bi rong
{
L.pHead_HH = L.pTail_HH = p;//danh sach nay vua la dau vua la cuoi;
}
else
{
p->pNext_HH = L.pHead_HH;// p quang day de tham gia vao danh sach p
L.pHead_HH = p;// p chinh thuc dung dau danh sach
}
}
//the cuoi danh sach
void AddTail_LHH(ListLoaiHangHoa &L, NodeLoaiHangHoa *p)
{
if (L.pTail_LHH == NULL)
{
L.pHead_LHH = L.pTail_LHH = p;
}
else
{
L.pTail_LHH->pNext_LHH = p;//l.pTail quang day cho p
L.pTail_LHH = p;
}
}
void AddTail_HH(ListHangHoa &L, NodeHangHoa *p)
{
if (L.pTail_HH == NULL)
{
L.pHead_HH = L.pTail_HH = p;
}
else
{
L.pTail_HH->pNext_HH = p;//l.pTail quang day cho p
L.pTail_HH = p;
}
}
//5 nhap du lieu cho danh sach
void InPutHH(ListHangHoa &l)
{
NodeHangHoa *p;
int n;
char TenHH[50];
char MaHH[20];
char NgayHH[20];
int GiaHH;
CreateListHH(l);
cout << "\nNhap vao so HANG HOA can nhap :";
cin >> n;
for (int i = 1; i <= n; i++)
{
cin.ignore();
fflush(stdin);
cout << "\nNhap Ma So Hang Hoa --trong Loai hang hoa : ";
cin.getline(MaHH, 20);
fflush(stdin);
cout << "\nNhap Ngay / Thang / Nam --trong Loai hang hoa thu Hang Hoa : ";
cin.getline(NgayHH, 20);
fflush(stdin);
cout << "\nNhap Ten Hang Hoa --trong Loai hang hoa : ";
cin.getline(TenHH, 50);
fflush(stdin);
cout << "\nNhap Gia --trong Loai hang hoa thu Hang Hoa :";
cin >> GiaHH;
fflush(stdin);
p = CreateHangHoa(MaHH, NgayHH, TenHH, GiaHH);
AddTail_HH(l, p);
}
}
void InPutLHH(ListLoaiHangHoa &L, ListHangHoa &l)
{
NodeLoaiHangHoa *p;
int n;
char MaLHH[20];
char TenLHH[50];
CreateListLHH(L);
cout << "\nBan can nhap bao nhieu -LOAI HANG HOA- :";
cin >> n;
for (int i = 1; i <= n; i++)
{
cin.ignore();
cout << "\n Ban vui long nhap Ma So Loai Hang Hoa thu[" << i << "] : ";
cin.getline(MaLHH, 20);
fflush(stdin);
cout << "\nBan vui long nhap Ten Loai Hang Hoa thu[" << i << "]:";
cin.getline(TenLHH, 50);
p = CreateLoaiHangHoa(TenLHH, MaLHH);
AddTail_LHH(L, p);
InPutHH(l);
}
}
void OutPutHH(ListHangHoa l)
{
for (NodeHangHoa *p = l.pHead_HH; p != NULL; p = p->pNext_HH)
{
cout << "-----";
cout << "\nMa hang hoa la :" << p->MaHH;
cout << "\nTen hang hoa la :" << p->TenHH;
cout << "\nNgay hang hoa la :" << p->NgayHH;
cout << "\nGia cua hang hoa la :" << p->GiaHH;
}
}
void OutPutLHH(ListLoaiHangHoa L, ListHangHoa l)
{
for (NodeLoaiHangHoa *p = L.pHead_LHH; p != NULL; p = p->pNext_LHH)
{
cout << "------";
cout << "\nMa Loai hang hoa :" << p->MaLHH;
cout << "\nTen Loai hang hoa :" << p->TenLHH;
fflush(stdin);
OutPutHH(l);
}
}
int main()
{
ListLoaiHangHoa L;
ListHangHoa l;
InPutLHH(L, l);
OutPutLHH(L, l);
getch();
return 0;
}
thôi nhìn code hết muốn sửa