SOLUTION:
#include
"stdafx.h"
#include
"iostream"
using namespace std;
/////////////////////////////////////////////////////////////////////////////////////////
struct EmployeeNode
{
char name[100];
int salary;
EmployeeNode* next;
EmployeeNode( ) : salary(0), next(NULL)
{ }
};
/////////////////////////////////////////////////////////////////////////////////////////
class Employee
{
private:
EmployeeNode* first, *current;
public:
Employee( ) : first(NULL), current(NULL)
{ }
void show( );
void add_at_start( );
void add_at_end( );
void add_at_speci( );
void del_at_start( );
void del_at_end( );
void del_at_speci( );
void sort( );
};
//--------------Traverse
(Access/Display each element of the link list) -----------------
void Employee::show( )
{
EmployeeNode* temp = first;
cout << endl << "Name\t\t\tSalary"
<< endl << endl;
do
{
cout << temp->name << "\t\t\t"
<< temp->salary << endl;
temp = temp->next;
}
while(temp != NULL);
}
//--------------------------------Insert
node at start-----------------------------------
void
Employee::add_at_start( )
{
EmployeeNode* temp = new EmployeeNode;
cout << "\nEnter Employee's Name: ";
cin
>> temp->name;
cout << "Enter Employee's Salary: ";
cin
>> temp->salary;
if(first == NULL)
{
first = temp;
current = first;
}
else
{
current->next = temp;
current = temp;
}
}
//---------------------------------Insert
node at end------------------------------------
void
Employee::add_at_end( )
{
EmployeeNode* temp = new EmployeeNode;
cout << "\nEnter Employee's Name: ";
cin >>
temp->name;
cout << "Enter Employee's Salary: ";
cin >>
temp->salary;
temp->next = first;
first = temp;
}
//-------------------Insert a node
after specified number of nodes ----------------------
void
Employee::add_at_speci( )
{
int n;
cout << "\nAfter How Many Nodes Do You Want to Add
a New Node? ";
cin >> n;
int s_n = 0;
EmployeeNode* T = NULL;
current = first;
while(s_n != n)
{
T = current;
s_n++;
current = current->next;
}
EmployeeNode* temp = new EmployeeNode;
T->next = temp; temp->next
= current;
cout << "\nEnter Employee's Name: "; cin >> temp->name;
cout << "Enter Employee's Salary: "; cin >> temp->salary;
}
//------------------------------Delete
a node from start---------------------------------
void
Employee::del_at_start( )
{
cout<<"\n";
EmployeeNode* temp = first; current
= NULL;
while(temp!=NULL)
{
current = temp; temp
= temp->next;
cout << " Deleting " <<
current->name << endl; delete
current;
}
}
//-------------------------------Delete
a node from end----------------------------------
void
Employee::del_at_end( )
{
EmployeeNode* prev;
do
{
prev = NULL;
EmployeeNode *temp = first;
while(temp->next != NULL)
{
prev =
temp;
temp =
temp->next;
}
prev->next = NULL;
cout <<
" Deleting " << temp->name << endl;
delete temp;
}
while(prev != NULL);
}
//-------------------Delete a node
after specified number of nodes ----------------------
void
Employee::del_at_speci( )
{
int n;
cout << "\nWhich Node Do You Want to Delete?
";
cin >> n;
int s_n = 0;
EmployeeNode* T = NULL, *prev = NULL;
current = first;
while(s_n != n)
{
prev = T;
T = current;
s_n++;
current = current->next;
}
if(T == first)
{
first = current;
cout <<
" Deleting " << T->name << endl;
delete T;
}
else
{
prev->next =
current;
cout <<
" Deleting " << T->name << endl;
delete T;
}
}
//-----------------Sort nodes in
ascending order according to salary --------------------
void Employee::sort( )
{
current = first;
while(current != NULL)
{
EmployeeNode* temp = current->next;
while(temp != NULL)
{
if(current->salary
> temp->salary)
{
EmployeeNode* swaper = new EmployeeNode;
swaper->salary = temp->salary; strcpy_s(swaper->name , temp->name);
temp->salary = current->salary; strcpy_s(temp->name , current->name);
current->salary = swaper->salary; strcpy_s(current->name,swaper->name);
delete swaper;
}
temp = temp->next;
}
delete temp;
current = current->next;
}
}
//--------------------------------------Output
1-----------------------------------------
void main( )
{
Employee e1;
e1.add_at_start( ); e1.add_at_start( ); e1.add_at_start(
);
e1.show( ); e1.del_at_start( );
system("pause");
}
//--------------------------------------Output
2-----------------------------------------
void
main( )
{
Employee e1;
e1.add_at_end(
); e1.add_at_end( ); e1.add_at_end( );
e1.show(
); e1.del_at_start( );
system("pause");
}
//--------------------------------------Output
7-----------------------------------------
void main( )
{
Employee e1;
e1.add_at_start( ); e1.add_at_start(
); e1.add_at_start( ); e1.show( );
e1.sort( ); cout
<< endl << "After Sorting:"; e1.show( );
system("pause");
}
0 comments: