-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path4_0_students_linked_list.cpp
84 lines (69 loc) · 1.61 KB
/
4_0_students_linked_list.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
struct listNode {
int studentNum;
int grade;
listNode * next;
};
typedef listNode * studentCollection;
void removeLinkedList(studentCollection &head);
void addRecord(studentCollection& sc, int stuNum, int gr);
double averageRecord(studentCollection sc);
int main()
{
studentCollection sc = nullptr;
listNode* node1 = new listNode;
node1->studentNum = 1001;
node1->grade = 78;
listNode* node2 = new listNode;
node2->studentNum = 1012;
node2->grade = 93; listNode* node3 = new listNode;
node3->studentNum = 1076;
node3->grade = 85;
sc = node1;
node1->next = node2;
node2->next = node3;
node3->next = nullptr;
node1 = node2 = node3 = nullptr;
removeLinkedList(sc);
cin.get();
return 0;
}
void addRecord(studentCollection& sc, int stuNum, int gr)
{
listNode * newNode = new listNode;
newNode->studentNum = stuNum;
newNode->grade = gr;
newNode->next = sc;
sc = newNode;
}
double averageRecord(studentCollection sc)
{
if (sc == nullptr) return 0;
int count = 0;
double sum = 0;
listNode * loopPtr = sc;
while (loopPtr != nullptr)
{
sum += loopPtr->grade;
count++;
loopPtr = loopPtr->next;
}
double average = sum / count;
return average;
}
void removeLinkedList(studentCollection &head)
{
listNode * loopPtr = head;
listNode * deleteNode;
while (loopPtr != nullptr)
{
deleteNode = loopPtr;
loopPtr = loopPtr->next;
delete deleteNode;
}
head = nullptr;
return;
}