#include "stdio.h"
//1. Khai Bao Cau Truc Du Lieu
struct Hocsinh
{
int Ma;
char ten[30];
char diachi[50];
float DTB;
};
typedef struct Hocsinh HOCSINH;
struct Node
{
HOCSINH Data;
Node *pNext;
};
typedef struct Node NODE;
struct List
{
NODE *pHead;
NODE *pTail;
};
typedef struct List LIST;
//2. Khoi Tao Danh Sach Lien Ket
void Init(LIST &L)
{
L.pHead = L.pTail = NULL;
}
//3. Tao Node
NODE *GetNode(HOCSINH hs)
{
NODE *p;
p = new NODE;
if (p == NULL)
return NULL;
p->Data = hs;
p->pNext = NULL;
return p;
}
//4. Them 1 Node Vao Dau Danh Sach
void AddHead(LIST &L, NODE *p)
{
if (L.pHead == NULL)
{
L.pHead = p;
L.pHead = L.pTail;
}
else
{
p->pNext = L.pHead;
L.pHead = p;
}
}
void Nhap(HOCSINH hs)
{
printf("Ma So HS: ");
scanf("%d", &hs.Ma);
printf("Nhap Ten HS: ");
fflush(stdin);
gets(hs.ten);
printf("Nhap Dia Chi HS: ");
gets(hs.diachi);
printf("Nhap DTB HS: ");
scanf("%f", &hs.DTB);
}
void Input(LIST &L, int &n)
{
Init(L);
HOCSINH hs[10];
printf("Nhap So Hoc Sinh Muon Nhap: ");
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
printf(" = = Hoc Sinh 1 = =\n");
Nhap(hs[i]);
NODE *p = GetNode(hs[i]);
AddHead(L, p);
}
}
void Xuat(HOCSINH hs)
{
printf("Ma So HS: %d", hs.Ma);
fflush(stdin);
printf("Ho Ten HS: ");
puts(hs.ten);
printf("Dia Chi HS: ");
puts(hs.diachi);
printf("Diem Trung Binh HS: %f", hs.DTB);
}
void Output(LIST L)
{
for (NODE *p = L.pHead; L.pHead != NULL; p = p->pNext)
{
Xuat(p->Data);
}
}
void main()
{
int n;
LIST L;
Input(L, n);
Output(L);
}
Mọi người xem dùm em với em còn lỗi nào vậy ạ, em đang làm là nhập mảng struct các học sinh vào danh sách liên kết