I was given an Assignment to Create a C++ program to input ID, Semester, Name of a student via Linked Lists. The functions to be implemented were Add, Search and Delete a Student.
I have completed it as far as could go , but am facing difficulty in implementing the Delete Function .....
Here is the code of the program that I have written
Code:
#include<iostream.h>
/*Delete based on ID pending*/
struct Student {
int id, sem;
char name[30];
Student *next;
};
Student *start=NULL, *ptr=NULL, *traverse=NULL, *temp=NULL;
void displayList() {
traverse = start;
cout<<"\n----Linked List Elements----\n";
while(traverse!=NULL) {
cout<<(traverse->id)<<" ";
traverse = traverse->next;
}
}
int main() {
cout<<"\n----Enter Your Choice----\n";
cout<<"1. Add Student\n"
<<"2. Search Student\n"
<<"3. Delete Student\n";
void deleteStudent();
void searchStudent();
void addStudent();
char cont = 'y';
do {
int user_choice;
cout<<"Enter your Choice: ";
cin>>user_choice;
switch(user_choice) {
case 1: addStudent();
break;
case 2: searchStudent();
break;
case 3: deleteStudent();
break;
default: cout<<"Wrong Choice!!";
}
cout<<"\n\nDo you want to continue? (y/n): ";
cin>>cont;
} while(cont=='y'||cont=='Y');
return 0;
}
void deleteStudent() {
traverse = start;
if(traverse==NULL)
cout<<"Database Empty!!";
else {
int temp_ID;
cout<<"Enter ID to be deleted: ";
cin>>temp_ID;
while(traverse!=NULL) {
if(traverse->id==temp_ID) {
cout<<"DELETED!!";
cout<<"#####################################\n";
cout<<"ID: "<<traverse->id<<endl;
cout<<"Semester: "<<traverse->sem<<endl;
cout<<"Name: "<<traverse->name<<endl;
cout<<"#####################################\n";
cout<<traverse->id;
temp=traverse->next;
cout<<temp->id;
cout<<traverse->id;
delete traverse;
traverse=temp;
cout<<traverse->id;
displayList();
break;
}
else {
traverse=traverse->next;
}
}
}
}
void searchStudent() {
cout<<"Enter ID to be Searched: ";
int data_search;
cin>>data_search;
traverse = start;
while(traverse!=NULL) {
if((traverse->id)==data_search) {
cout<<"\n----Linked List Linear Search Result----\n";
cout<<"ID: "<<traverse->id<<endl;
cout<<"Semester: "<<traverse->sem<<endl;
cout<<"Name: "<<traverse->name<<endl;
break;
}
else
traverse = traverse->next;
}
}
void addStudent() {
ptr = new Student;
if(ptr==NULL)
cout<<"Memory Full!!";
else {
cout<<"Enter Student ID: ";
cin>>ptr->id;
cout<<"Enter Semester: ";
cin>>ptr->sem;
cout<<"Enter Name(without space): ";
cin>>ptr->name;
if(start==NULL) {
start = ptr;
ptr->next = NULL;
}
else {
Student *temp;
temp = start;
start = ptr;
ptr->next = temp;
}
}
}
Please tell me where am I missing while deleting a Node based on the ID stored in it ....