# Find sum of all perfect numbers in linked list

Here given code implementation process.

// C Program
// Find sum of all perfect numbers in linked list

#include <stdio.h>
//for malloc function
#include <stdlib.h>

//Linked List Node
struct Node
{
int data;
struct Node *next;
};
//Create a node of linked list
struct Node *create_node(int data)
{
//Create dynamic node
struct Node *node = (struct Node *) malloc(sizeof(struct Node));
if (node == NULL)
{
printf("Memory overflow\n");
}
else
{
//Set initial node value
node->data = data;
node->next = NULL;
}
return node;
}
//Add new node at end of linked list
void insert(struct Node **head, int data)
{
struct Node *node = create_node(data);
if ( *head == NULL)
{
*head = node;
}
else
{
struct Node *temp = *head;
//Find last node
while (temp->next != NULL)
{
temp = temp->next;
}
//Add node at last possition
temp->next = node;
}
}
//Display linked list element
void display(struct Node *head)
{
if (head == NULL)
{
printf("\nEmpty linked list\n");
return;
}
struct Node *temp = head;
printf("\n Linked Linked : ");
while (temp != NULL)
{
printf("  %d", temp->data);
temp = temp->next;
}
}
//Get the sum of factor in a given number
int get_factor_sum(int num)
{
int sum = 0;
int i = 1;
while (i <= (num / 2))
{
if (num % i == 0)
{
// When number is divisible by number i
sum += i;
}
i++;
}
return sum;
}
//Find the sum of perfect node values in given linked list
void perfect_num_sum(struct Node *head)
{
if (head == NULL)
{
printf("\n Empty Linked List \n");
return;
}
//Define resultant variable
int result = 0;
//Get first node of linked list
struct Node *temp = head;
//iterate linked list node
while (temp != NULL)
{
if (temp->data > 0 && temp->data == get_factor_sum(temp->data))
{
//When node data is perfect number
result += temp->data;
}
//Visit to next node
temp = temp->next;
}
//Display of calculated result
printf("\n Perfect number sum is : %d\n", result);
}
int main()
{
struct Node *head = NULL;
//Create  linked list
insert( &head, 5);
insert( &head, 28);
insert( &head, 7);
insert( &head, 6);
insert( &head, 1);
insert( &head, 21);
display(head);
// 6 + 28  = 34
perfect_num_sum(head);
return 0;
}

#### Output

Linked Linked :   5  28  7  6  1  21
Perfect number sum is : 34
// Java Program
// Find sum of all perfect numbers in linked list

//Node of LinkedList
class Node
{
public int data;
public Node next;
public Node(int data)
{
//Set node value
this.data = data;
this.next = null;
}
}
class MyLinkedList
{
public Node head;
public Node tail;
//Class constructors
public MyLinkedList()
{
this.head = null;
this.tail = null;
}
//insert node at last of linke list
public void insert(int data)
{
//Create a node
Node node = new Node(data);
if (this.head == null)
{
//When linked list empty add first node
this.head = node;
this.tail = node;
}
else
{
//Add new node at end of linked list
this.tail.next = node;
this.tail = node;
}
}
//Display linked list element
public void display()
{
if (this.head == null)
{
System.out.print("\nEmpty linked list\n");
return;
}
Node temp = this.head;
System.out.print("\n Linked List : ");
while (temp != null)
{
System.out.print("  " + temp.data);
temp = temp.next;
}
}
//Get the sum of factor in a given number
public int get_factor_sum(int num)
{
int sum = 0;
int i = 1;
while (i <= (num / 2))
{
if (num % i == 0)
{
// When number is divisible by number i
sum += i;
}
i++;
}
return sum;
}
//Find the sum of perfect node values in given linked list
public void perfect_num_sum()
{
if (this.head == null)
{
System.out.print("\n Empty Linked List \n");
return;
}
//Define resultant variable
int result = 0;
//Get first node of linked list
Node temp = this.head;
//iterate linked list node
while (temp != null)
{
if (temp.data > 0 && temp.data == get_factor_sum(temp.data))
{
//When node data is perfect number
result += temp.data;
}
//Visit to next node
temp = temp.next;
}
//Display of calculated result
System.out.print("\n Perfect number sum is : " + result + "\n");
}
public static void main(String[] args)
{
MyLinkedList obj = new MyLinkedList();
//Add node in linked list
obj.insert(5);
obj.insert(28);
obj.insert(7);
obj.insert(6);
obj.insert(1);
obj.insert(21);
obj.display();
// 6 + 28  = 34
obj.perfect_num_sum();
}
}

#### Output

Linked List :   5  28  7  6  1  21
Perfect number sum is : 34
//Include header file
#include <iostream>
using namespace std;

// C++ Program
// Find sum of all perfect numbers in linked list

//Node of LinkedList
class Node
{
public:
int data;
Node * next;
Node(int data)
{
//Set node value
this->data = data;
this->next = NULL;
}
};
class MyLinkedList
{
public: Node * head;
Node * tail;
//Class constructors
MyLinkedList()
{
this->head = NULL;
this->tail = NULL;
}
//insert node at last of linke list
void insert(int data)
{
//Create a node
Node * node = new Node(data);
if (this->head == NULL)
{
//When linked list empty add first node
this->head = node;
this->tail = node;
}
else
{
//Add new node at end of linked list
this->tail->next = node;
this->tail = node;
}
}
//Display linked list element
void display()
{
if (this->head == NULL)
{
cout << "\nEmpty linked list\n";
return;
}
Node * temp = this->head;
cout << "\n Linked List : ";
while (temp != NULL)
{
cout << "  " << temp->data;
temp = temp->next;
}
}
//Get the sum of factor in a given number
int get_factor_sum(int num)
{
int sum = 0;
int i = 1;
while (i <= (num / 2))
{
if (num % i == 0)
{
// When number is divisible by number i
sum += i;
}
i++;
}
return sum;
}
//Find the sum of perfect node values in given linked list
void perfect_num_sum()
{
if (this->head == NULL)
{
cout << "\n Empty Linked List \n";
return;
}
//Define resultant variable
int result = 0;
//Get first node of linked list
Node * temp = this->head;
//iterate linked list node
while (temp != NULL)
{
if (temp->data > 0 && temp->data == this->get_factor_sum(temp->data))
{
//When node data is perfect number
result += temp->data;
}
//Visit to next node
temp = temp->next;
}
//Display of calculated result
cout << "\n Perfect number sum is : " << result << "\n";
}
};
int main()
{
MyLinkedList obj = MyLinkedList();
//Add node in linked list
obj.insert(5);
obj.insert(28);
obj.insert(7);
obj.insert(6);
obj.insert(1);
obj.insert(21);
obj.display();
// 6 + 28  = 34
obj.perfect_num_sum();
return 0;
}

#### Output

Linked List :   5  28  7  6  1  21
Perfect number sum is : 34
//Include namespace system
using System;

// C# Program
// Find sum of all perfect numbers in linked list

//Node of LinkedList
class Node
{
public int data;
public Node next;
public Node(int data)
{
//Set node value
this.data = data;
this.next = null;
}
}
class MyLinkedList
{
public Node head;
public Node tail;
//Class constructors
public MyLinkedList()
{
this.head = null;
this.tail = null;
}
//insert node at last of linke list
public void insert(int data)
{
//Create a node
Node node = new Node(data);
if (this.head == null)
{
//When linked list empty add first node
this.head = node;
this.tail = node;
}
else
{
//Add new node at end of linked list
this.tail.next = node;
this.tail = node;
}
}
//Display linked list element
public void display()
{
if (this.head == null)
{
Console.Write("\nEmpty linked list\n");
return;
}
Node temp = this.head;
Console.Write("\n Linked List : ");
while (temp != null)
{
Console.Write("  " + temp.data);
temp = temp.next;
}
}
//Get the sum of factor in a given number
public int get_factor_sum(int num)
{
int sum = 0;
int i = 1;
while (i <= (num / 2))
{
if (num % i == 0)
{
// When number is divisible by number i
sum += i;
}
i++;
}
return sum;
}
//Find the sum of perfect node values in given linked list
public void perfect_num_sum()
{
if (this.head == null)
{
Console.Write("\n Empty Linked List \n");
return;
}
//Define resultant variable
int result = 0;
//Get first node of linked list
Node temp = this.head;
//iterate linked list node
while (temp != null)
{
if (temp.data > 0 && temp.data == get_factor_sum(temp.data))
{
//When node data is perfect number
result += temp.data;
}
//Visit to next node
temp = temp.next;
}
//Display of calculated result
Console.Write("\n Perfect number sum is : " + result + "\n");
}
public static void Main(String[] args)
{
MyLinkedList obj = new MyLinkedList();
//Add node in linked list
obj.insert(5);
obj.insert(28);
obj.insert(7);
obj.insert(6);
obj.insert(1);
obj.insert(21);
obj.display();
// 6 + 28  = 34
obj.perfect_num_sum();
}
}

#### Output

Linked List :   5  28  7  6  1  21
Perfect number sum is : 34
<?php
// Php Program
// Find sum of all perfect numbers in linked list

//Node of LinkedList
class Node
{
public \$data;
public \$next;

function __construct(\$data)
{
//Set node value
\$this->data = \$data;
\$this->next = null;
}
}
class MyLinkedList
{
public \$head;
public \$tail;
//Class constructors
function __construct()
{
\$this->head = null;
\$this->tail = null;
}
//insert node at last of linke list
public	function insert(\$data)
{
//Create a node
\$node = new Node(\$data);
if (\$this->head == null)
{
//When linked list empty add first node
\$this->head = \$node;
\$this->tail = \$node;
}
else
{
//Add new node at end of linked list
\$this->tail->next = \$node;
\$this->tail = \$node;
}
}
//Display linked list element
public	function display()
{
if (\$this->head == null)
{
echo "\nEmpty linked list\n";
return;
}
\$temp = \$this->head;
echo "\n Linked List : ";
while (\$temp != null)
{
echo "  ". \$temp->data;
\$temp = \$temp->next;
}
}
//Get the sum of factor in a given number
public	function get_factor_sum(\$num)
{
\$sum = 0;
\$i = 1;
while (\$i <= (intval(\$num / 2)))
{
if (\$num % \$i == 0)
{
// When number is divisible by number i
\$sum += \$i;
}
\$i++;
}
return \$sum;
}
//Find the sum of perfect node values in given linked list
public	function perfect_num_sum()
{
if (\$this->head == null)
{
echo "\n Empty Linked List \n";
return;
}
//Define resultant variable
\$result = 0;
//Get first node of linked list
\$temp = \$this->head;
//iterate linked list node
while (\$temp != null)
{
if (\$temp->data > 0 && \$temp->data == \$this->get_factor_sum(\$temp->data))
{
//When node data is perfect number
\$result += \$temp->data;
}
//Visit to next node
\$temp = \$temp->next;
}
//Display of calculated result
echo "\n Perfect number sum is : ". \$result ."\n";
}
}

function main()
{
\$obj = new MyLinkedList();
//Add node in linked list
\$obj->insert(5);
\$obj->insert(28);
\$obj->insert(7);
\$obj->insert(6);
\$obj->insert(1);
\$obj->insert(21);
\$obj->display();
// 6 + 28  = 34
\$obj->perfect_num_sum();
}
main();

#### Output

Linked List :   5  28  7  6  1  21
Perfect number sum is : 34
// Node Js Program
// Find sum of all perfect numbers in linked list

//Node of LinkedList
class Node
{
constructor(data)
{
//Set node value
this.data = data;
this.next = null;
}
}
class MyLinkedList
{
//Class constructors
constructor()
{
this.head = null;
this.tail = null;
}
//insert node at last of linke list
insert(data)
{
//Create a node
var node = new Node(data);
if (this.head == null)
{
//When linked list empty add first node
this.head = node;
this.tail = node;
}
else
{
//Add new node at end of linked list
this.tail.next = node;
this.tail = node;
}
}
//Display linked list element
display()
{
if (this.head == null)
{
process.stdout.write("\nEmpty linked list\n");
return;
}
var temp = this.head;
process.stdout.write("\n Linked List : ");
while (temp != null)
{
process.stdout.write("  " + temp.data);
temp = temp.next;
}
}
//Get the sum of factor in a given number
get_factor_sum(num)
{
var sum = 0;
var i = 1;
while (i <= (parseInt(num / 2)))
{
if (num % i == 0)
{
// When number is divisible by number i
sum += i;
}
i++;
}
return sum;
}
//Find the sum of perfect node values in given linked list
perfect_num_sum()
{
if (this.head == null)
{
process.stdout.write("\n Empty Linked List \n");
return;
}
//Define resultant variable
var result = 0;
//Get first node of linked list
var temp = this.head;
//iterate linked list node
while (temp != null)
{
if (temp.data > 0 && temp.data == this.get_factor_sum(temp.data))
{
//When node data is perfect number
result += temp.data;
}
//Visit to next node
temp = temp.next;
}
//Display of calculated result
process.stdout.write("\n Perfect number sum is : " + result + "\n");
}
}

function main()
{
var obj = new MyLinkedList();
//Add node in linked list
obj.insert(5);
obj.insert(28);
obj.insert(7);
obj.insert(6);
obj.insert(1);
obj.insert(21);
obj.display();
// 6 + 28  = 34
obj.perfect_num_sum();
}
main();

#### Output

Linked List :   5  28  7  6  1  21
Perfect number sum is : 34
#  Python 3 Program
#  Find sum of all perfect numbers in linked list

# Node of LinkedList
class Node :

def __init__(self, data) :
# Set node value
self.data = data
self.next = None

class MyLinkedList :

# Class constructors
def __init__(self) :
self.head = None
self.tail = None

# insert node at last of linke list
def insert(self, data) :
# Create a node
node = Node(data)
if (self.head == None) :
# When linked list empty add first node
self.head = node
self.tail = node
else :
# Add new node at end of linked list
self.tail.next = node
self.tail = node

# Display linked list element
def display(self) :
if (self.head == None) :
print("\nEmpty linked list\n", end = "")
return

temp = self.head
print("\n Linked List : ", end = "")
while (temp != None) :
print("  ", temp.data, end = "")
temp = temp.next

# Get the sum of factor in a given number
def get_factor_sum(self, num) :
sum = 0
i = 1
while (i <= (int(num / 2))) :
if (num % i == 0) :
#  When number is divisible by number i
sum += i

i += 1

return sum

# Find the sum of perfect node values in given linked list
def perfect_num_sum(self) :
if (self.head == None) :
print("\n Empty Linked List \n", end = "")
return

# Define resultant variable
result = 0
# Get first node of linked list
temp = self.head
# iterate linked list node
while (temp != None) :
if (temp.data > 0 and temp.data == self.get_factor_sum(temp.data)) :
# When node data is perfect number
result += temp.data

# Visit to next node
temp = temp.next

# Display of calculated result
print("\n Perfect number sum is : ", result ,"\n", end = "")

def main() :
obj = MyLinkedList()
# Add node in linked list
obj.insert(5)
obj.insert(28)
obj.insert(7)
obj.insert(6)
obj.insert(1)
obj.insert(21)
obj.display()
#  6 + 28  = 34
obj.perfect_num_sum()

if __name__ == "__main__": main()

#### Output

Linked List :    5   28   7   6   1   21
Perfect number sum is :  34
#  Ruby Program
#  Find sum of all perfect numbers in linked list

# Node of LinkedList
class Node

# Define the accessor and reader of class Node
attr_reader :data, :next
attr_accessor :data, :next

def initialize(data)

# Set node value
self.data = data
self.next = nil
end
end
class MyLinkedList

# Define the accessor and reader of class MyLinkedList
attr_reader :head, :tail
attr_accessor :head, :tail

# Class constructors
def initialize()

self.head = nil
self.tail = nil
end
# insert node at last of linke list
def insert(data)

# Create a node
node = Node.new(data)
if (self.head == nil)

# When linked list empty add first node
self.head = node
self.tail = node
else

# Add new node at end of linked list
self.tail.next = node
self.tail = node
end
end
# Display linked list element
def display()

if (self.head == nil)

print("\nEmpty linked list\n")
return
end
temp = self.head
print("\n Linked List : ")
while (temp != nil)

print("  ", temp.data)
temp = temp.next
end
end
# Get the sum of factor in a given number
def get_factor_sum(num)

sum = 0
i = 1
while (i <= (num / 2))

if (num % i == 0)

#  When number is divisible by number i
sum += i
end
i += 1
end
return sum
end
# Find the sum of perfect node values in given linked list
def perfect_num_sum()

if (self.head == nil)

print("\n Empty Linked List \n")
return
end
# Define resultant variable
result = 0
# Get first node of linked list
temp = self.head
# iterate linked list node
while (temp != nil)

if (temp.data > 0 && temp.data == self.get_factor_sum(temp.data))

# When node data is perfect number
result += temp.data
end
# Visit to next node
temp = temp.next
end
# Display of calculated result
print("\n Perfect number sum is : ", result ,"\n")
end
end
def main()

obj = MyLinkedList.new()
# Add node in linked list
obj.insert(5)
obj.insert(28)
obj.insert(7)
obj.insert(6)
obj.insert(1)
obj.insert(21)
obj.display()
#  6 + 28  = 34
obj.perfect_num_sum()
end
main()

#### Output

Linked List :   5  28  7  6  1  21
Perfect number sum is : 34
// Scala Program
// Find sum of all perfect numbers in linked list

//Node of LinkedList
class Node(var data: Int,
var next: Node)
{
def this(data: Int)
{
this(data, null);
}
}
class MyLinkedList(var head: Node,
var tail: Node)
{
//Class constructors
def this()
{
this(null, null);
}
//insert node at last of linke list
def insert(data: Int): Unit = {
//Create a node
var node: Node = new Node(data);
if (this.head == null)
{
//When linked list empty add first node
this.head = node;
this.tail = node;
}
else
{
//Add new node at end of linked list
this.tail.next = node;
this.tail = node;
}
}
//Display linked list element
def display(): Unit = {
if (this.head == null)
{
print("\nEmpty linked list\n");
return;
}
var temp: Node = this.head;
print("\n Linked List : ");
while (temp != null)
{
print("  " + temp.data);
temp = temp.next;
}
}
//Get the sum of factor in a given number
def get_factor_sum(num: Int): Int = {
var sum: Int = 0;
var i: Int = 1;
while (i <= ((num / 2).toInt))
{
if (num % i == 0)
{
// When number is divisible by number i
sum += i;
}
i += 1;
}
return sum;
}
//Find the sum of perfect node values in given linked list
def perfect_num_sum(): Unit = {
if (this.head == null)
{
print("\n Empty Linked List \n");
return;
}
//Define resultant variable
var result: Int = 0;
//Get first node of linked list
var temp: Node = this.head;
//iterate linked list node
while (temp != null)
{
if (temp.data > 0 && temp.data == get_factor_sum(temp.data))
{
//When node data is perfect number
result += temp.data;
}
//Visit to next node
temp = temp.next;
}
//Display of calculated result
print("\n Perfect number sum is : " + result + "\n");
}
}
object Main
{
def main(args: Array[String]): Unit = {
var obj: MyLinkedList = new MyLinkedList();
//Add node in linked list
obj.insert(5);
obj.insert(28);
obj.insert(7);
obj.insert(6);
obj.insert(1);
obj.insert(21);
obj.display();
// 6 + 28  = 34
obj.perfect_num_sum();
}
}

#### Output

Linked List :   5  28  7  6  1  21
Perfect number sum is : 34
// Swift Program
// Find sum of all perfect numbers in linked list

//Node of LinkedList
class Node
{
var data: Int;
var next: Node? ;
init(_ data: Int)
{
//Set node value
self.data = data;
self.next = nil;
}
}
class MyLinkedList
{
var head: Node? ;
var tail: Node? ;
//Class constructors
init()
{
self.head = nil;
self.tail = nil;
}
//insert node at last of linke list
func insert(_ data: Int)
{
//Create a node
let node: Node? = Node(data);
if (self.head == nil)
{
//When linked list empty add first node
self.head = node;
self.tail = node;
}
else
{
//Add new node at end of linked list
self.tail!.next = node;
self.tail = node;
}
}
//Display linked list element
func display()
{
if (self.head == nil)
{
print("\nEmpty linked list\n", terminator: "");
return;
}
var temp: Node? = self.head;
print("\n Linked List : ", terminator: "");
while (temp != nil)
{
print("  ", temp!.data, terminator: "");
temp = temp!.next;
}
}
//Get the sum of factor in a given number
func get_factor_sum(_ num: Int) -> Int
{
var sum: Int = 0;
var i: Int = 1;
while (i <= (num / 2))
{
if (num % i == 0)
{
// When number is divisible by number i
sum += i;
}
i += 1;
}
return sum;
}
//Find the sum of perfect node values in given linked list
func perfect_num_sum()
{
if (self.head == nil)
{
print("\n Empty Linked List \n", terminator: "");
return;
}
//Define resultant variable
var result: Int = 0;
//Get first node of linked list
var temp: Node? = self.head;
//iterate linked list node
while (temp != nil)
{
if (temp!.data > 0 && temp!.data == self.get_factor_sum(temp!.data))
{
//When node data is perfect number
result += temp!.data;
}
//Visit to next node
temp = temp!.next;
}
//Display of calculated result
print("\n Perfect number sum is : ", result ,"\n", terminator: "");
}
}
func main()
{
let obj: MyLinkedList = MyLinkedList();
//Add node in linked list
obj.insert(5);
obj.insert(28);
obj.insert(7);
obj.insert(6);
obj.insert(1);
obj.insert(21);
obj.display();
// 6 + 28  = 34
obj.perfect_num_sum();
}
main();

#### Output

Linked List :    5   28   7   6   1   21
Perfect number sum is :  34

## Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

### New Comment

© 2022, kalkicode.com, All rights reserved