Please refer this solution. This is working file for Integers
Header file :-
-----------------------------------
#ifndef LINKEDLIST_H
#define LINKEDLIST_H
struct node{
void * data;
node * next;
};
class LinkedList
{
private:
node* head ;
int size;
public:
LinkedList();
//method to create a node
node * create(void* data);
//method to append
void append(node * item);
//method to prepend
void prepend(node * item);
//insert in ascending order
void insertAscend(node * item);
//insert in ascending order
void insertDescend(node * item);
//display all nodes
void display();
//free the list
void freeUp();
};
#endif // LINKEDLIST_H
Source file :-
----------------------------------
#include \"linkedlist.h\"
#include
#include
#include
LinkedList::LinkedList()
{
//head = (node *)malloc(sizeof(node));
size = 0;
head = NULL;
}
//method to create a node
node * LinkedList::create(void* data){
node * newNode = (node *)malloc(sizeof(node));
newNode->data = malloc(sizeof(data));
memcpy(newNode->data,data,sizeof(data));
newNode->next = NULL;
return newNode;
}
//method to append
void LinkedList::append(node * item){
if(head == NULL){
head = item;
size++;
return;
}
node* current;
current = head;
while (current->next!=NULL )
{
current = current->next;
}
current->next = item ;
size++;
}
//method to prepend
void LinkedList::prepend(node * item){
if(head == NULL){
head = item;
size++;
return;
}
item->next = head;
head = item;
size++;
}
//insert in ascending order
void LinkedList::insertAscend(node * item){
if(head == NULL){
head = item;
size++;
return;
}
node* current;
current = head;
node * prev = NULL;
bool found = false;
while (current !=NULL){
int *current_data = static_cast(current->data);
int *item_data = static_cast(item->data);
if(*item_data < *current_data){
if(prev == NULL){
item->next = current;
if(current == head){
head = item;
}
}
else{
prev->next = item;
item->next = current;
}
found = true;
break;
}
prev = current;
current = current->next;
}
if(!found){
prev->next = item;
}
size++;
}
//insert in Descending order
void LinkedList::insertDescend(node * item){
if(head == NULL){
head = item;
size++;
return;
}
node* current;
current = head;
node * prev = NULL;
bool found = false;
while (current !=NULL){
int *current_data = static_cast(current->data);
int *item_data = static_cast(item->data);
if(*item_data > *current_data){
if(prev == NULL){
item->next = current;
if(current == head){
head = item;
}
}
else{
prev->next = item;
item->next = current;
}
found = true;
break;
}
prev = current;
current = current->next;
}
if(!found){
prev->next = item;
}
size++;
}
//display all nodes
void LinkedList::display(){
int idx = 0;
node* current;
current = head;
while (current != NULL ){
idx++;
int *data = static_cast(current->data);
printf(\"data for item ::%dis :: %d\ \",idx,*data);
current = current->next;
}
}
//free the list
void LinkedList::freeUp(){
node* current;
current = head;
while (current->next!=NULL ){
head = current->next;
delete current;
current = head;
}
}
Main f.