Danh sách sinh viên
Khai báo kiểu dữ liệu
typedef struct
{
char ID[10], Name[50];
float R1, R2, R3;
} Student;
struct Node
{
Student Element;
struct Node *Next;
};
typedef struct Node *Position;
typedef struct Node *List;
Một số phép toán
append
Yêu cầu
Chèn thêm một SinhVien vào cuối phần tử.
int append(Student s, List *pL)
{
List P = *pL;
while (P->Next != NULL)
{
if (strcmp(s.ID, P->Next->Element.ID) == 0)
return 0;
P = P->Next;
}
P->Next = (List)malloc(sizeof(struct Node));
strcpy(P->Next->Element.ID, s.ID);
strcpy(P->Next->Element.Name, s.Name);
P->Next->Element.R1 = s.R1;
P->Next->Element.R1 = s.R2;
P->Next->Element.R1 = s.R3;
return 1;
}
getList
Yêu cầu
Tạo một danh sách sinh viên rỗng.
List getList()
{
List L;
L = (List)malloc(sizeof(struct Node));
return L;
}
getFailedList
Yêu cầu
Trả về danh sách sinh viên chưa đạt.
List getFailedList(List L)
{
List S = L,
FL = getList();
int a;
while (S->Next != NULL)
{
if ((S->Next->Element.R1 + S->Next->Element.R2 + S->Next->Element.R3) / 3 < 4)
a = append(S->Next->Element, &FL);
S = S->Next;
}
a++;
return FL;
}
locate
Yêu cầu
Trả về vị trí đầu tiên của sinh viên có ID là ID : )
List locate(char ID[], List L)
{
List P = L;
while (P->Next != NULL)
{
if (strcmp(ID, P->Next->Element.ID) == 0)
return P;
P = P->Next;
}
return P;
}
printList
Yêu cầu
In danh sách sinh viên.
void printList(List L)
{
List P = L;
int i = 1;
while (P->Next != NULL)
{
printf("%2d -", i);
printf("%11s -", P->Next->Element.ID);
printf("%51s - ", P->Next->Element.Name);
printf("%.3f - ", P->Next->Element.R1);
printf("%.3f - ", P->Next->Element.R2);
printf("%.3f - ", P->Next->Element.R3);
printf("%.3f\n", (P->Next->Element.R1 + P->Next->Element.R2 + P->Next->Element.R3) / 3);
P = P->Next;
i++;
}
}
showPassedList
Yêu cầu
Hiển thị danh sách các sinh viên đạt.
void showPassedList(List L)
{
List P = L;
int i = 1;
while (P->Next != NULL)
{
if ((P->Next->Element.R1 + P->Next->Element.R2 + P->Next->Element.R3) / 3 >= 4)
{
printf("%2d -", i);
printf("%11s -", P->Next->Element.ID);
printf("%51s - ", P->Next->Element.Name);
printf("%.3f - ", P->Next->Element.R1);
printf("%.3f - ", P->Next->Element.R2);
printf("%.3f - ", P->Next->Element.R3);
printf("%.3f\n", (P->Next->Element.R1 + P->Next->Element.R2 + P->Next->Element.R3) / 3);
i++;
}
P = P->Next;
}
printf("%d students in total", i - 1);
}