Upload files to "/"
This commit is contained in:
172
linkedList.cpp
Normal file
172
linkedList.cpp
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
struct Student {
|
||||||
|
int id;
|
||||||
|
string name;
|
||||||
|
int age;
|
||||||
|
Student* next;
|
||||||
|
};
|
||||||
|
|
||||||
|
Student* head = nullptr; // Define the head of the linked list
|
||||||
|
|
||||||
|
Student* createStudent(int id, const string& name, int age) {
|
||||||
|
Student* s = new Student;
|
||||||
|
s->id = id;
|
||||||
|
s->name = name;
|
||||||
|
s->age = age;
|
||||||
|
s->next = nullptr;
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
void addStudent(int id, const string& name, int age) { // Add student to the end
|
||||||
|
Student* s = createStudent(id, name, age);
|
||||||
|
|
||||||
|
if (!head) {
|
||||||
|
head = s;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Student* p = head;
|
||||||
|
while (p->next) {
|
||||||
|
p = p->next;
|
||||||
|
}
|
||||||
|
p->next = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
Student* findStudent(int id) {
|
||||||
|
Student* p = head;
|
||||||
|
while (p) {
|
||||||
|
if (p->id == id)
|
||||||
|
return p;
|
||||||
|
p = p->next;
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool updateStudent(int id, const string& newName, int newAge) {
|
||||||
|
Student* s = findStudent(id);
|
||||||
|
if (!s)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
s->name = newName;
|
||||||
|
s->age = newAge;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool deleteStudent(int id) {
|
||||||
|
if (!head)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (head->id == id) { // If head is to be deleted
|
||||||
|
Student* tmp = head;
|
||||||
|
head = head->next;
|
||||||
|
delete tmp;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Student* p = head;
|
||||||
|
while (p->next && p->next->id != id) {
|
||||||
|
p = p->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p->next) {
|
||||||
|
Student* tmp = p->next;
|
||||||
|
p->next = tmp->next;
|
||||||
|
delete tmp;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void showStudents() {
|
||||||
|
if (!head) {
|
||||||
|
cout << "No student info.\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Student* p = head;
|
||||||
|
cout << "Student ID\tName\tAge\n";
|
||||||
|
while (p) {
|
||||||
|
cout << p->id << "\t" << p->name << "\t" << p->age << endl;
|
||||||
|
p = p->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void menu() {
|
||||||
|
cout << "\n===== Student Mgmt System =====\n";
|
||||||
|
cout << "1. Add student\n";
|
||||||
|
cout << "2. Delete student\n";
|
||||||
|
cout << "3. Modify student\n";
|
||||||
|
cout << "4. Query student\n";
|
||||||
|
cout << "5. Display all students\n";
|
||||||
|
cout << "0. Exit\n";
|
||||||
|
cout << "Please select<63><74>";
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int choice;
|
||||||
|
|
||||||
|
do {
|
||||||
|
menu();
|
||||||
|
cin >> choice;
|
||||||
|
|
||||||
|
int id, age;
|
||||||
|
string name;
|
||||||
|
|
||||||
|
switch (choice) {
|
||||||
|
case 1:
|
||||||
|
cout << "Student ID - Name - Age<67><65>";
|
||||||
|
cin >> id >> name >> age;
|
||||||
|
addStudent(id, name, age);
|
||||||
|
cout << "Added successfully.\n";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
cout << "Input student ID to delete<74><65>";
|
||||||
|
cin >> id;
|
||||||
|
if (deleteStudent(id))
|
||||||
|
cout << "Deleted.\n";
|
||||||
|
else
|
||||||
|
cout << "Student not found.\n";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
cout << "Enter new Student ID - Name - Age<67><65>";
|
||||||
|
cin >> id >> name >> age;
|
||||||
|
if (updateStudent(id, name, age))
|
||||||
|
cout << "Modified successfully.\n";
|
||||||
|
else
|
||||||
|
cout << "Student not found.\n";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4: {
|
||||||
|
cout << "Enter Student ID: ";
|
||||||
|
cin >> id;
|
||||||
|
Student* s = findStudent(id);
|
||||||
|
if (s)
|
||||||
|
cout << "Student ID: " << s->id << " Name: " << s->name << " Age: " << s->age << endl;
|
||||||
|
else
|
||||||
|
cout << "Student not found.\n";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
showStudents();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
cout << "Exit.\n";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
cout << "Invalid option.\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
} while (choice != 0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user