Cho em hỏi là tại sao hàm MaxSP của em không hoạt động ạ, em thấy ko có lỗi gì trong đó cả, em cảm ơn ạ.
#include <iostream>
#include <string.h>
using namespace std;
struct CongNhan
{
char MCN[50];
char Ten[50];
int NamSinh, SoSP;
};
struct Node
{
CongNhan *info;
Node *pNext;
Node *pPrev;
};
struct DList
{
Node *pHead;
Node *pTail;
};
Node *GetNode(CongNhan *x)
{
Node *p = new Node;
if (p != NULL)
{
p->info = x;
p->pNext = p->pPrev = NULL;
}
return p;
}
void Init(DList &L)
{
L.pHead = L.pTail = NULL;
}
CongNhan *inputCN()
{
CongNhan *x = new CongNhan;
cin.ignore(1, '\n');
cin.getline(x->MCN, 50);
cin.getline(x->Ten, 50);
cin >> x->NamSinh >> x->SoSP;
return x;
}
void outputCN(Node *p)
{
cout << p->info->MCN << "\t" << p->info->Ten << "\t" << p->info->NamSinh << "\t" << p->info->SoSP << endl;
}
void AddHead(DList &L, CongNhan *x)
{
Node *newele = GetNode(x);
if (L.pHead == NULL)
{
L.pHead = L.pTail = newele;
}
else
{
newele->pNext = L.pHead;
L.pHead->pPrev = newele;
L.pHead = newele;
}
}
void AddTail(DList &L, CongNhan *x)
{
Node *newele = GetNode(x);
if (L.pTail == NULL)
{
L.pHead = L.pTail = newele;
}
else
{
L.pTail->pNext = newele;
newele->pPrev = L.pTail;
L.pTail = newele;
}
}
void CreateDlist(DList &L, int n)
{
CongNhan *x;
for (int i = 1; i <= n; i++)
{
x = inputCN();
AddTail(L, x);
}
}
void PrintDlist(DList L, int n)
{
Node *p = L.pHead;
while (p != NULL)
{
outputCN(p);
p = p->pNext;
}
}
void MaxSP(DList L, int n)
{
int max=L.pHead->info->SoSP;
Node *p=L.pHead;
while (p!=NULL)
{
if(max<p->info->SoSP)
{
max=p->info->SoSP;
}
p=p->pNext;
}
while ((p!=NULL))
{
if(max==p->info->SoSP)
{
outputCN(p);
}
p=p->pNext;
}
}
int main()
{
int n;
DList L;
Init(L);
cin >> n;
CreateDlist(L, n);
PrintDlist(L, n);
MaxSP(L,n);
}