The objective of this assignment is to implement several basic methods for a sin
ID: 3606706 • Letter: T
Question
The objective of this assignment is to implement several basic methods for a singly linked list. I have provided declaration files for the Node and LinkedList classes. ( see node.h and linkedlist.h ).
Implement the following LinkedList methods in linkedlist.cpp:
void add ( int N ) Add N to the front of the linked list.
bool remove ( int N ) Remove the first instance of N from the list, then return true. If the N was not found, return false.
int find ( int N ) Find the first instance of N in the list and return its index. Return -1 if N was not found.
int count ( int N ) Return a count of the instances of N in the list.
int at ( int N ) Return the value stored in the node at index N.
int len() Return the current length of the list.
You can use main.cpp for your own internal testing. Make sure you do not alter the order of elements in the list.
node.h file
class Node {
public:
Node * next = nullptr;
int value = 0;
};
linklisted.h file
#include "node.h"
using namespace std;
class LinkedList {
Node * head = nullptr;
int length = 0;
public:
void add( int );
bool remove( int );
int find( int );
int count( int );
int at( int );
int len();
};
main.cpp file
#include <iostream>
#include "linkedlist.h"
using namespace std;
int main () {
/* Test your implementation here */
}
linkedlist.cpp file
Explanation / Answer
C++ program to do so -
#include<iostream>
#include<cstdio>
#include<cstdlib>
int c=0;//to count
using namespace std;
struct node
{
int info;
struct node *next;
}*start;
class single_llist
{
public:
node* create_node(int);
void add();
void delete_pos();
void at();
void count(int );
void display();
single_llist()
{
start = NULL;
}
};
main()
{
int choice, nodes, element, position, i;
single_llist sl;
int e ;
start = NULL;
while (1)
{
cout<<endl<<"Operations on singly linked list"<<endl;
cout<<"1.Insert node at position"<<endl;
cout<<"2.Delete a Particular Node"<<endl;
cout<<"3.Find Element"<<endl;
cout<<"4.Display Linked List"<<endl;
cout <<"5.Current Length of the list "<<endl;
cout<<"6.Count instances of a number "<<endl;
cout<<"7.Exit "<<endl;
cout<<"Enter your choice : ";
cin>>choice;
switch(choice)
{
case 1:
cout<<"Inserting Node at a given position:"<<endl;
c++;
sl.add();
cout<<endl;
break;
case 2:
cout<<"Delete a particular node: "<<endl;
sl.delete_pos();
c--;
break;
case 3:
cout<<"Search element in Link List: "<<endl;
sl.at();
cout<<endl;
break;
case 4:
cout<<"Display elements of link list"<<endl;
sl.display();
cout<<endl;
break;
case 5:
cout<<"Length is "<<c<<endl;
break;
case 6:
cout<<"Enter a number to count instances ";
cin >> e;
sl.count(e);
break;
case 7:
cout<<"Exiting..."<<endl;
exit(1);
break;
default:
cout<<"Wrong choice"<<endl;
}
}
}
node *single_llist::create_node(int value)
{
struct node *temp, *s;
temp = new(struct node);
if (temp == NULL)
{
cout<<"Memory not allocated "<<endl;
return 0;
}
else
{
temp->info = value;
temp->next = NULL;
return temp;
}
}
void single_llist::add()
{
int value, pos, counter = 0;
cout<<"Enter the value to be inserted: ";
cin>>value;
struct node *temp, *s, *ptr;
temp = create_node(value);
cout<<"Enter the postion at which node to be inserted: ";
cin>>pos;
int i;
s = start;
while (s != NULL)
{
s = s->next;
counter++;
}
if (pos == 1)
{
if (start == NULL)
{
start = temp;
start->next = NULL;
}
else
{
ptr = start;
start = temp;
start->next = ptr;
}
}
else if (pos > 1 && pos <= counter)
{
s = start;
for (i = 1; i < pos; i++)
{
ptr = s;
s = s->next;
}
ptr->next = temp;
temp->next = s;
}
else
{
cout<<"Positon out of range"<<endl;
}
}
void single_llist::delete_pos()
{
int pos, i, counter = 0;
if (start == NULL)
{
cout<<"List is empty"<<endl;
return;
}
cout<<"Enter the position of value to be deleted: ";
cin>>pos;
struct node *s, *ptr;
s = start;
if (pos == 1)
{
start = s->next;
}
else
{
while (s != NULL)
{
s = s->next;
counter++;
}
if (pos > 0 && pos <= counter)
{
s = start;
for (i = 1;i < pos;i++)
{
ptr = s;
s = s->next;
}
ptr->next = s->next;
}
else
{
cout<<"Position out of range"<<endl;
}
free(s);
cout<<"Element Deleted"<<endl;
}
}
void single_llist::at()
{
int value, pos = 0;
bool flag = false;
if (start == NULL)
{
cout<<"List is empty"<<endl;
return;
}
cout<<"Enter the value to be searched: ";
cin>>value;
struct node *s;
s = start;
while (s != NULL)
{
pos++;
if (s->info == value)
{
flag = true;
cout<<"Element "<<value<<" is found at position "<<pos<<endl;
}
s = s->next;
}
if (!flag)
cout<<"Element "<<value<<" not found in the list"<<endl;
}
void single_llist::display()
{
struct node *temp;
if (start == NULL)
{
cout<<"The List is Empty"<<endl;
return;
}
temp = start;
cout<<"Elements of list are: "<<endl;
while (temp != NULL)
{
cout<<temp->info<<"->";
temp = temp->next;
}
cout<<"NULL"<<endl;
}
void single_llist::count(int e)
{
int f=0;
struct node *temp;
if (start == NULL)
{
cout<<"The List is Empty"<<endl;
return;
}
temp = start;
while (temp != NULL)
{
if(temp->info==e)
{
f++;
};
temp = temp->next;
}
cout<<"Number of frequencies of entered number are "<<f<<endl;
cout<<endl;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.