# CS301 Data  Structures Assignment 1 Solution Spring 2013

We know that in linked list we have one value and one pointer (to hold the memory address of next node). Note that it is not compulsory to have only one value. There can be more than one value in one node but pointer will remain one.
Write a C++ program to implement linked list data structure. In this problem every node should have six values,
the name of node and a pointer. Your program should prompt the user to enter total nu mber of nodes in the list.
After this give the name to node and save 6 different values in node. Process should be repeated for each node.

After entering values of all the nodes, sum the values in each node and sort the list in ascending order (on the
basis of sum calculated in each node) i.e. node with smallest sum comes first and node with largest sum comes last.

Note: Values within a single node should not duplicate. If a user tries to enter any duplic ate value WITHIN A
NODE then show a warning message and ask user to enter value again. The diagram given below is showing the sorted list.

Solution Guidelines:

2. To save six different values in one node you can use array as data member of Node class.
3. Get the sum of six values and on comparison of sum of different nodes sort the list.
4. To get the idea about exact output of program, see Demo.wmv file attached with assignment file.

Solution:

```#include <iostream>
#include <conio.h>
using namespace std;
class Node{
public:
void set_next(Node* next_node){Next_Node = next_node;}
Node * get_next(){return Next_Node;}
char * get_name(){return nod_name;}
void set_objects(int,int);
void set_name(char*);
int get_objects(int);
void set_sum(int sums){sum = sums;}
int get_sum(){return sum;}
~Node(){};
private:
int sum;
char *nod_name;
int objects[6];
Node * Next_Node;

};
void Node::set_name(char* name){
nod_name = new char[strlen(name+1)];
strcpy(nod_name,name);
}
void Node::set_objects(int obj,int indux)
{

objects[indux] = obj;

}
int Node::get_objects(int indux)
{
return objects[indux];
}
class List{
public:
List();
void sort(Node*,int);
void display(int);
void get_input(int,Node*);
int get(int);

private:
int size;
Node * Current_Node;
Node * Last_Current_Node;

};
List::List()
{
size = 0;
Current_Node = NULL;
Last_Current_Node = NULL;
}
void List::sort(Node * sort_node, int number_nodes)
{
char temp_name[25];
int * sum = new int[number_nodes];
for(int i=0;i<number_nodes;i++)
{
sum[i] = 0;
if(Current_Node != NULL)
{
for(int a=0;a<6;a++)
{
sum[i] += this->Current_Node->get_objects(a);
}
}
Current_Node->set_sum(sum[i]);
Current_Node = Current_Node->get_next();

}
int temp = 0;
for(int i=0;i<number_nodes;i++)
{

for(int a=0;a<number_nodes;a++)
{

if(Current_Node != NULL && Last_Current_Node != NULL)
{

if(Current_Node->get_sum() < Last_Current_Node->get_sum())
{
temp = Current_Node->get_sum();
strcpy(temp_name , Current_Node->get_name());
Current_Node->set_sum(Last_Current_Node->get_sum());
Current_Node->set_name(Last_Current_Node->get_name());
Last_Current_Node->set_sum(temp);
Last_Current_Node->set_name(temp_name);

}

Last_Current_Node = Last_Current_Node->get_next();
}
else
{
break;
}

}
Current_Node = Current_Node->get_next();

}
}

void List::display(int number_nods)
{
if(Current_Node != NULL)
{
cout" List Size = "sizeendl;
coutendl;
for(int a=0;a<number_nods;a++)
{
cout" Element "" "a+1" "Current_Node->get_name()endl;

Current_Node = Current_Node->get_next();

}
coutendl;
}
}

void List::get_input(int number_nod,Node * Nodes)
{
int f = 0;
char arrs[25];
for(int i=0;i<number_nod;i++)
{
int arr[6] = {0};
cout"Enter The Name OF the Node: ";
cin>>arrs;
Nodes[i].set_name(arrs);
for(int a=0;a<6;a++)
{
f = 0;
cout"Enter Value "a+1": ";
cin>>arr[a];
for(int j=0;j<6;j++)
{
if(arr[a] == arr[j])
{

f++;

}
}
if(f > 1)
{

cout"Dublicate Value Within One Node Is Not Allowed "endl;
a--;
continue;
}

}
cout"Node Values Finshed"endlendl;

}

}

int List::get(int Indux)
{
return Current_Node->get_objects(Indux);
}
{

for(int i=0;i<6;i++)
{
nodss->set_objects(objests[i],i);
}

if(Current_Node == NULL)
{

nodss->set_next(NULL);
Current_Node = nodss;

}
else
{
nodss->set_next(Current_Node->get_next());
Current_Node->set_next(nodss);
Last_Current_Node = Current_Node;
Current_Node = nodss;
}
size++;

}
int main()
{
List list;
int number_nods = 0;
cout"How many Nodes You want to Create ? ";
cin>>number_nods;
coutendl;
Node * Nodes = new Node[number_nods];
list.get_input(number_nods,Nodes);
list.sort(Nodes,number_nods);
list.display(number_nods);
delete [] Nodes;
system("pause");
}```