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 ạ ?

14:23 25-11-2018 2.008 lượt xem 1 bình luận 13:06 26-11-2018

#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;
}

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 13:06 26-11-2018

thôi nhìn code hết muốn sửa

Câu hỏi mới nhất