Em đang làm bài tập nhóm về danh sách liên kết đơn và đang bị bí ở đoạn không có 2 mã trùng nhau này. Ý tưởng em nghĩ là dùng 1 hàm kiểm tra điều kiện khi nhập vào nhưng nó lại bị lỗi nên em xin phép được tham khảo cách tạo hàm kiểm tra của mọi người ạ
struct HoDan
{
int ma;
string ten;
int thvien;
float thunhap;
};
typedef struct HoDan hodan;
struct Node
{
hodan *data;
struct Node* pNext;
};
typedef struct Node node;
struct List {
node* pHead;
node* pTail;
};
typedef struct List list;
void CreateList(list &li) {
li.pHead=li.pTail=NULL;
}
void Set(hodan *ho)
{
cout<<"\nNhap ma ho: ";
cin>>ho->ma;
cin.ignore();
cout<<"\nNhap ten chu ho: ";
getline(cin, ho->ten);
cout<<"\nNhap so thanh vien: ";
cin>>ho->thvien;
cout<<"\nNhap muc thu nhap: ";
cin>>ho->thunhap;
}
node *CreateNode()
{
hodan* ho = new hodan;
Set(ho);
node* p = new node;
if (p == NULL) {
cout << "\nDay bo nho!";
return 0;
}
p->data = ho;
p->pNext = NULL;
return p;
}
void AddFirst(List &li, node *p)
{
if (li.pHead == NULL) {
li.pHead = li.pTail= p;//=>node cuoi = node dau
}
else {
p->pNext = li.pHead;
li.pHead = p;
}
}
void AddLast(List &li, node *p)
{
if (li.pHead == NULL) {
li.pHead = li.pTail= p;
}
else {
for(node *k=li.pHead;;k=k->pNext){
if(k->pNext==NULL){//ktra xem node co lien ket voi null khong
k->pNext=p;//=>k la node cuoi
break;
}
}
}
}
//ham xuat thong tin 1 ho dan
void ShowNode(node *k)
{
cout<<"\nMa ho: "<<k->data->ma;
cout<<"\nTen chu ho: "<<k->data->ten;
cout<<"\nSo thanh vien: "<<k->data->thvien;
cout<<"\nMuc thu nhap: "<<k->data->thunhap;
cout<<endl;
}