// FDS Group C
/* Department of Computer Department has Student's Club Named "Pinnacle Club".
Students of Second, Third And Final Year of Department Can Be Granted Membership On Request.
Similarly One May Cancel The Membership Of Club.First Node Is Reserved For President Of Club And
Last Node Is Reserved For Secretary Of Club.Write C++ Program To Maintain Club Member's Information
Using Singly Linked List.Store Student's PRN And Name.Write Functions To :
A) Add And Delete The Members As Well As President Or Even Secretary.
B) Compute Total Number Of Members of Club.
C) Display Members.
D) Two Linked List Exists For Two Divisions. Concatenate Two LinkedLists.
*/
#include <iostream>
using namespace std;
class Node
{
public:
string PRN;
string className;
string Name;
Node *next;
};
class PinnacleClub : public Node
{
public:
Node *head;
Node *tail;
PinnacleClub(); // Constructer Declaration
void CreatePinnacleClub();
void LinkedListTraversal(int);
void InsertPresident();
void InsertSecretary();
void InsertMember(int);
int DeletePresident();
int DeleteSecretary();
void DeleteMember(int);
void ConcatenateList(PinnacleClub, PinnacleClub);
};
PinnacleClub ::PinnacleClub()
{
head = NULL;
tail = NULL;
}
int i = 1;
void PinnacleClub ::CreatePinnacleClub()
{
Node *temp = NULL;
temp = new (nothrow) Node;
if (!temp)
{
cout << "Memory Allocation Failed\n";
}
else
{
string name;
cout << "\nEnter The Name of Member " << i << endl;
cin.clear();
cin.ignore();
getline(cin, name);
string classname;
cout << "\nEnter The Class of Member " << i << endl;
cin >> classname;
string prn;
cout << "\nEnter The PRN Of Member " << i << endl;
cin >> prn;
// Handling Wrong UserInput
while (!cin.good())
{
cout << "Wrong Input, Please Enter Integers Only!!\n";
cin.clear();
cin.ignore(100, '\n');
cout << "\nEnter The PRN Of Member " << i << endl;
cin >> prn;
}
temp->PRN = prn;
temp->className = classname;
temp->Name = name;
temp->next = NULL;
if (head == NULL)
{
head = temp;
tail = head;
}
else
{
tail->next = temp;
tail = temp;
}
i++;
}
}
int j = 1;
void PinnacleClub ::LinkedListTraversal(int num)
{
Node *temp = head;
if (temp == NULL)
{
cout << "Club Is Empty\n";
}
else
{
while (temp != NULL)
{
if (j == 1)
{
cout << "\n****President****" << endl;
;
cout << "Name : " << temp->Name << endl;
;
cout << "Class : " << temp->className << endl;
;
cout << "PRN : " << temp->PRN << endl;
;
temp = temp->next;
j++;
}
else if (j == num)
{
cout << "\n****Secretary****" << endl;
;
cout << "Name : " << temp->Name << endl;
;
cout << "Class : " << temp->className << endl;
;
cout << "PRN : " << temp->PRN << endl;
;
temp = temp->next;
j++;
}
else
{
cout << "\nMember " << j - 1 << endl;
cout << "Name : " << temp->Name << endl;
;
cout << "Class : " << temp->className << endl;
;
cout << "PRN : " << temp->PRN << endl;
;
temp = temp->next;
j++;
}
}
}
}
void PinnacleClub ::InsertPresident()
{
Node *temp = NULL;
temp = new (nothrow) Node;
if (!temp)
{
cout << "Memory Allocation Failed\n";
}
else
{
string name;
cout << "\nEnter The Name of New President\n";
cin.clear();
cin.ignore();
getline(cin, name);
string classname;
cout << "\nEnter The Class\n";
cin >> classname;
string prn;
cout << "\nEnter The PRN\n";
cin >> prn;
temp->Name = name;
temp->className = classname;
temp->PRN = prn;
temp->next = NULL;
if (head == NULL)
{
head = temp;
tail = head;
}
else
{
temp->next = head;
head = temp;
}
}
}
void PinnacleClub ::InsertSecretary()
{
Node *temp = NULL;
temp = new (nothrow) Node;
if (!temp)
{
cout << "Memory Allocation Failed\n";
}
else
{
string name;
cout << "\nEnter The Name of New Secretary\n";
cin.clear();
cin.ignore();
getline(cin, name);
string classname;
cout << "\nEnter The Class\n";
cin >> classname;
string prn;
cout << "\nEnter The PRN\n";
cin >> prn;
temp->Name = name;
temp->className = classname;
temp->PRN = prn;
temp->next = NULL;
if (head == NULL)
{
head = temp;
tail = head;
}
else
{
tail->next = temp;
tail = temp;
}
}
}
void PinnacleClub ::InsertMember(int index)
{
Node *temp = NULL;
temp = new (nothrow) Node;
int count = 0;
Node *ptr = head;
if (!temp)
{
cout << "Memory Allocation Failed\n";
}
else
{
string name;
cout << "\nEnter The Name of New Member\n";
cin.clear();
cin.ignore();
getline(cin, name);
string classname;
cout << "\nEnter The Class\n";
cin >> classname;
string prn;
cout << "\nEnter The PRN\n";
cin >> prn;
temp->Name = name;
temp->className = classname;
temp->PRN = prn;
temp->next = NULL;
while (count < (index - 1))
{
ptr = ptr->next;
count++;
}
temp->next = ptr->next;
ptr->next = temp;
}
}
int PinnacleClub ::DeletePresident()
{
bool flag = true;
Node *temp = head;
if (temp == NULL)
{
cout << "There Is No Member In The Pinnacle Club To Delete\n";
}
else
{
head = head->next;
delete temp;
}
return flag;
}
int PinnacleClub ::DeleteSecretary()
{
bool flag = true;
Node *temp = tail;
Node *ptr = head;
if (temp == NULL)
{
cout << "There Is No Member In The Pinnacle Club To Delete\n";
}
else
{
do
{
ptr = ptr->next;
} while (ptr->next != temp);
tail = ptr;
ptr->next = NULL;
delete temp;
}
return flag;
}
void PinnacleClub ::DeleteMember(int index)
{
Node *ptr = head;
Node *temp = head->next;
int count = 0;
if (ptr == NULL)
{
cout << "There Is No Member In The Pinnacle Club To Delete\n";
}
else
{
while (count < (index - 1))
{
ptr = ptr->next;
temp = temp->next;
count++;
}
ptr->next = temp->next;
delete temp;
}
}
void PinnacleClub ::ConcatenateList(PinnacleClub club1, PinnacleClub club2)
{
Node *ptr = club1.head;
while (ptr->next != NULL)
{
ptr = ptr->next;
}
ptr->next = club2.head;
}
int k = 1;
void ConcatenateTraversal(PinnacleClub club)
{
Node *temp = club.head;
if (temp == NULL)
{
cout << "Club Is Empty\n";
}
else
{
while (temp != NULL)
{
cout << "\nMember " << k << endl;
cout << "Name : " << temp->Name << endl;
;
cout << "Class : " << temp->className << endl;
;
cout << "PRN : " << temp->PRN << endl;
;
temp = temp->next;
k++;
}
}
}
int main()
{
int num = 0;
int userInput1;
char userInput2;
bool flag1 = false;
bool flag2 = false;
// Handling Wrong UserInput
while (!cin.good() >> num)
{
cout << "Wrong Input, Please Enter Integers Only!!\n";
cin.clear();
cin.ignore(100, '\n');
cout << "\nEnter The Number Of Elements You Want To Add In The LinkedList\n";
cin >> num;
}
PinnacleClub club1;
while (true)
{
cout << "\n1. Press 1 To Create Pinnacle Club\n"
<< "2. Press 2 To List Members Of Pinnacle Club\n"
<< "3. Press 3 To Insert New President\n"
<< "4. Press 4 To Insert New Secretary\n"
<< "5. Press 5 To Insert New Member\n"
<< "6. Press 6 To Delete President\n"
<< "7. Press 7 To Delete Secretary\n"
<< "8. Press 8 To Delete Member\n"
<< "9. Press 9 To Contatenate Two Lists\n";
cin >> userInput1;
while (!cin >> userInput1)
{
cout << "Wrong Input, Please Enter Integers Only!!\n";
cin.clear();
cin.ignore(100, '\n');
cout << "\n1. Press 1 To Create Pinnacle Club\n"
<< "2. Press 2 To List Members Of Pinnacle Club\n"
<< "3. Press 3 To Insert New President\n"
<< "4. Press 4 To Insert New Secretary\n"
<< "5. Press 5 To Insert New Member\n"
<< "6. Press 6 To Delete President\n"
<< "7. Press 7 To Delete Secretary\n"
<< "8. Press 8 To Delete Member\n"
<< "9. Press 9 To Contatenate Two Lists\n";
cin >> userInput1;
}
switch (userInput1)
{
case 1:
flag1 = false;
flag2 = false;
cout << "\nEnter The Number Of Members In The Pinnacle Club\n";
cin >> num;
while (!cin >> num)
{
cout << "Wrong Input, Please Enter Integers Only!!\n";
cin.clear();
cin.ignore(100, '\n');
cout << "\nEnter The Number Of Members In The Pinnacle Club\n";
cin >> num;
}
for (int v = 0; v < num; v++)
{
club1.CreatePinnacleClub();
}
break;
case 2:
flag1 = false;
flag2 = false;
if (club1.head == NULL)
{
cout << "Club Is Empty\n";
}
else
{
cout << "\nThe Members In The Pinnacle Club Are : \n";
j = 1;
club1.LinkedListTraversal(num);
}
break;
case 3:
if (flag1 == flag2 == true)
{
club1.InsertPresident();
cout << "\nThe Members Of Pinnace Club After Inserting New President: \n";
num = num + 1;
j = 1;
club1.LinkedListTraversal(0);
flag2 = false;
}
else
{
flag1 = false;
flag2 = false;
club1.InsertPresident();
cout << "\nThe Members Of Pinnace Club After Inserting New President: \n";
num = num + 1;
j = 1;
club1.LinkedListTraversal(num);
}
break;
case 4:
if (flag1 == flag2 == true)
{
club1.InsertSecretary();
cout << "\nThe Members Of Pinnace Club After Inserting New Secretary: \n";
num = num + 1;
j = 2;
club1.LinkedListTraversal(num + 1);
flag1 = false;
}
else
{
flag1 = false;
flag2 = false;
club1.InsertSecretary();
num = num + 1;
j = 1;
cout << "\nThe Members Of Pinnacle Club After Inserting New Secretary : \n";
club1.LinkedListTraversal(num);
}
break;
case 5:
flag1 = false;
flag2 = false;
int index1;
cout << "\nEnter The Index Where You Want To Insert The Member\n";
cin >> index1;
if (index1 >= num)
{
cout << "List Index Out Of Range\n\n";
}
else
{
// Handling Wrong Input
while (!cin.good() >> index1)
{
cout << "Wrong Input, Please Enter Integers Only!!\n";
cin.clear();
cin.ignore(100, '\n');
cout << "\nEnter The Index Where You Want To Insert The Member\n";
cin >> index1;
}
club1.InsertMember(index1);
cout << "\nThe Members Of Pinnacle Club After Inserting New Member" << endl;
num = num + 1;
j = 1;
club1.LinkedListTraversal(num);
}
break;
case 6:
flag1 = club1.DeletePresident();
if (club1.head == NULL)
{
cout << "Club Is Empty\n";
}
else if (flag2)
{
cout << "\nThe Members Of Pinnacle Club After Deleting President : \n";
num = num - 1;
j = 2;
club1.LinkedListTraversal(0);
}
else
{
cout << "\nThe Members Of Pinnacle Club After Deleting President : \n";
num = num - 1;
j = 2;
club1.LinkedListTraversal(num + 1);
}
break;
case 7:
flag2 = club1.DeleteSecretary();
if (club1.head == NULL)
{
cout << "Club Is Empty\n";
}
else if (flag1)
{
cout << "\nThe Members Of Pinnacle Club After Deleting Secretary : \n";
num = num - 1;
j = 2;
club1.LinkedListTraversal(0);
}
else
{
cout << "\nThe Members Of Pinnacle Club After Deleting Secretary : \n";
num = num - 1;
j = 1;
club1.LinkedListTraversal(0);
}
break;
case 8:
flag1 = false;
flag2 = false;
int index2;
cout << "\nEnter The Index Where You Want To Delete The Member\n";
cin >> index2;
if (club1.head == NULL)
{
cout << "Club Is Empty\n\n";
}
else if (index2 >= num)
{
cout << "List Index Out Of Range\n\n";
}
else
{
// Handling Wrong Input
while (!cin.good() >> index2)
{
cout << "Wrong Input, Please Enter Integers Only!!\n";
cin.clear();
cin.ignore(100, '\n');
cout << "\nEnter The Index Where You Want To Delete The Member\n";
cin >> index2;
}
club1.DeleteMember(index2);
cout << "\nThe Members Of Pinnacle Club After Deleting Member" << endl;
num = num - 1;
j = 1;
club1.LinkedListTraversal(num);
}
break;
case 9:
{
int num2;
cout << "\nEnter The No of Members in The Second Club\n";
cin >> num2;
while (!cin >> num2)
{
cout << "Wrong Input, Please Enter Integers Only!!\n";
cin.clear();
cin.ignore();
cout << "\nEnter The No of Members in The Second Club\n";
cin >> num2;
}
PinnacleClub club2;
i = 1;
for (int s = 0; s < num; s++)
{
club2.CreatePinnacleClub();
}
club1.ConcatenateList(club1, club2);
ConcatenateTraversal(club1);
}
break;
default:
cout << "Please Enter Correct Input\n";
break;
}
cout << "\nEnter 'c' To Continue And 'e' To Exit\n";
cin >> userInput2;
if (userInput2 == 'c')
{
continue;
}
else if (userInput2 == 'e')
{
exit(0);
}
else
{
while (true)
{
cout << "Please Enter Correct Input\n";
cout << "\nEnter 'c' To Continue And 'e' To Exit\n";
cin >> userInput2;
if (userInput2 == 'c')
{
break;
}
else if (userInput2 == 'e')
{
exit(0);
}
else
{
continue;
}
}
}
}
return 0;
}
// Output
// 1. Press 1 To Create Pinnacle Club
// 2. Press 2 To List Members Of Pinnacle Club
// 3. Press 3 To Insert New President
// 4. Press 4 To Insert New Secretary
// 5. Press 5 To Insert New Member
// 6. Press 6 To Delete President
// 7. Press 7 To Delete Secretary
// 8. Press 8 To Delete Member
// 1
// Enter The Number Of Members In The Pinnacle Club
// 4
// Enter The Name of Member 1
// Rohan Patil
// Enter The Class of Member 1
// SECOMP
// Enter The PRN Of Member 1
// 72024041R
// Enter The Name of Member 2
// Vivek Kulkarni
// Enter The Class of Member 2
// SECOMP
// Enter The PRN Of Member 2
// 72024042V
// Enter The Name of Member 3
// Shubham Desai
// Enter The Class of Member 3
// SECOMP
// Enter The PRN Of Member 3
// 72024043S
// Enter The Name of Member 4
// Vijay Sontakke
// Enter The Class of Member 4
// SECOMP
// Enter The PRN Of Member 4
// 72024044V
// Enter 'c' To Continue And 'e' To Exit
// c
// 1. Press 1 To Create Pinnacle Club
// 2. Press 2 To List Members Of Pinnacle Club
// 3. Press 3 To Insert New President
// 4. Press 4 To Insert New Secretary
// 5. Press 5 To Insert New Member
// 6. Press 6 To Delete President
// 7. Press 7 To Delete Secretary
// 8. Press 8 To Delete Member
// 2
// The Members In The Pinnacle Club Are :
// ****President****
// Name : Rohan Patil
// Class : SECOMP
// PRN : 72024041R
// Member 1
// Name : Vivek Kulkarni
// Class : SECOMP
// PRN : 72024042V
// Member 2
// Name : Shubham Desai
// Class : SECOMP
// PRN : 72024043S
// ****Secretary****
// Name : Vijay Sontakke
// Class : SECOMP
// PRN : 72024044V
// Enter 'c' To Continue And 'e' To Exit
// c
// 1. Press 1 To Create Pinnacle Club
// 2. Press 2 To List Members Of Pinnacle Club
// 3. Press 3 To Insert New President
// 4. Press 4 To Insert New Secretary
// 5. Press 5 To Insert New Member
// 6. Press 6 To Delete President
// 7. Press 7 To Delete Secretary
// 8. Press 8 To Delete Member
// 6
// The Members Of Pinnacle Club After Deleting President :
// Member 1
// Name : Vivek Kulkarni
// Class : SECOMP
// PRN : 72024042V
// Member 2
// Name : Shubham Desai
// Class : SECOMP
// PRN : 72024043S
// ****Secretary****
// Name : Vijay Sontakke
// Class : SECOMP
// PRN : 72024044V
// Enter 'c' To Continue And 'e' To Exit
// c
// 1. Press 1 To Create Pinnacle Club
// 2. Press 2 To List Members Of Pinnacle Club
// 3. Press 3 To Insert New President
// 4. Press 4 To Insert New Secretary
// 5. Press 5 To Insert New Member
// 6. Press 6 To Delete President
// 7. Press 7 To Delete Secretary
// 8. Press 8 To Delete Member
// 3
// Enter The Name of New President
// Prakash Patil
// Enter The Class
// SECOMP
// Enter The PRN
// 72024045P
// The Members Of Pinnace Club After Inserting New President:
// ****President****
// Name : Prakash Patil
// Class : SECOMP
// PRN : 72024045P
// Member 1
// Name : Vivek Kulkarni
// Class : SECOMP
// PRN : 72024042V
// Member 2
// Name : Shubham Desai
// Class : SECOMP
// PRN : 72024043S
// ****Secretary****
// Name : Vijay Sontakke
// Class : SECOMP
// PRN : 72024044V
// Enter 'c' To Continue And 'e' To Exit
// c
// 1. Press 1 To Create Pinnacle Club
// 2. Press 2 To List Members Of Pinnacle Club
// 3. Press 3 To Insert New President
// 4. Press 4 To Insert New Secretary
// 5. Press 5 To Insert New Member
// 6. Press 6 To Delete President
// 7. Press 7 To Delete Secretary
// 8. Press 8 To Delete Member
// 7
// The Members Of Pinnacle Club After Deleting Secretary :
// ****President****
// Name : Prakash Patil
// Class : SECOMP
// PRN : 72024045P
// Member 1
// Name : Vivek Kulkarni
// Class : SECOMP
// PRN : 72024042V
// Member 2
// Name : Shubham Desai
// Class : SECOMP
// PRN : 72024043S
// Enter 'c' To Continue And 'e' To Exit
// c
// 1. Press 1 To Create Pinnacle Club
// 2. Press 2 To List Members Of Pinnacle Club
// 3. Press 3 To Insert New President
// 4. Press 4 To Insert New Secretary
// 5. Press 5 To Insert New Member
// 6. Press 6 To Delete President
// 7. Press 7 To Delete Secretary
// 8. Press 8 To Delete Member
// 4
// Enter The Name of New Secretary
// Pranav Joshi
// Enter The Class
// SECOMP
// Enter The PRN
// 72024046P
// The Members Of Pinnacle Club After Inserting New Secretary :
// ****President****
// Name : Prakash Patil
// Class : SECOMP
// PRN : 72024045P
// Member 1
// Name : Vivek Kulkarni
// Class : SECOMP
// PRN : 72024042V
// Member 2
// Name : Shubham Desai
// Class : SECOMP
// PRN : 72024043S
// ****Secretary****
// Name : Pranav Joshi
// Class : SECOMP
// PRN : 72024046P
// Enter 'c' To Continue And 'e' To Exit
// c
// 1. Press 1 To Create Pinnacle Club
// 2. Press 2 To List Members Of Pinnacle Club
// 3. Press 3 To Insert New President
// 4. Press 4 To Insert New Secretary
// 5. Press 5 To Insert New Member
// 6. Press 6 To Delete President
// 7. Press 7 To Delete Secretary
// 8. Press 8 To Delete Member
// 8
// Enter The Index Where You Want To Delete The Member
// 2
// The Members Of Pinnacle Club After Deleting Member
// ****President****
// Name : Prakash Patil
// Class : SECOMP
// PRN : 72024045P
// Member 1
// Name : Vivek Kulkarni
// Class : SECOMP
// PRN : 72024042V
// ****Secretary****
// Name : Pranav Joshi
// Class : SECOMP
// PRN : 72024046P
// Enter 'c' To Continue And 'e' To Exit
// c
// 1. Press 1 To Create Pinnacle Club
// 2. Press 2 To List Members Of Pinnacle Club
// 3. Press 3 To Insert New President
// 4. Press 4 To Insert New Secretary
// 5. Press 5 To Insert New Member
// 6. Press 6 To Delete President
// 7. Press 7 To Delete Secretary
// 8. Press 8 To Delete Member
// 5
// Enter The Index Where You Want To Insert The Member
// 2
// Enter The Name of New Member
// Shubham Desai
// Enter The Class
// SECOMP
// Enter The PRN
// 72024043S
// The Members Of Pinnacle Club After Inserting New Member
// ****President****
// Name : Prakash Patil
// Class : SECOMP
// PRN : 72024045P
// Member 1
// Name : Vivek Kulkarni
// Class : SECOMP
// PRN : 72024042V
// Member 2
// Name : Shubham Desai
// Class : SECOMP
// PRN : 72024043S
// ****Secretary****
// Name : Pranav Joshi
// Class : SECOMP
// PRN : 72024046P
// Enter 'c' To Continue And 'e' To Exit
// e
Comments
Post a Comment