Skip to main content

Find sum and product of all even digit sum in a Singly Linked List

Here given code implementation process.

// C Program 
// Find sum and product of all even digit sum in a Singly Linked List
#include <stdio.h>

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

// Linked List LinkNode
struct LinkNode
{
    int data;
    struct LinkNode *next;
};
// Singly linked list 
struct SingleLL
{
    struct LinkNode *head;
    struct LinkNode *tail;
};
// Returns the new linked list
struct SingleLL *newLinkedList()
{
    // Create memory of head and tail Nodes
    struct SingleLL *sll = (struct SingleLL *) malloc(sizeof(struct SingleLL));
    if (sll == NULL)
    {
        printf("Memory overflow\n");
    }
    else
    {
        sll->head = NULL;
        sll->tail = NULL;
    }
    return sll;
}
// Returns a new Node of linked list
struct LinkNode *createLinkNode(int data)
{
    // Create dynamic node
    struct LinkNode *node = (struct LinkNode *) malloc(sizeof(struct LinkNode));
    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 addNode(struct SingleLL *sll, int data)
{
    struct LinkNode *node = createLinkNode(data);
    if (sll->head == NULL)
    {
        sll->head = node;
    }
    else
    {
        // Append the node at last position
        sll->tail->next = node;
    }
    sll->tail = node;
}
// Display linked list element
void display(struct SingleLL *sll)
{
    if (sll->head == NULL)
    {
        printf("\n Empty linked list\n");
        return;
    }
    struct LinkNode *temp = sll->head;
    // iterating linked list elements
    while (temp != NULL)
    {
        printf(" %d →", temp->data);
        // Visit to next node
        temp = temp->next;
    }
    printf(" NULL\n");
}

// Returns the sum of digits of a given number
int digitSum(int num)
{
    int sum = 0;
    int n = num;

    while (n > 0)
    {
       sum += n%10;
       n = n / 10;
    }
   
    return sum;
}
//  Find the sum and product of even digit sum in linked list
void evenSumProduct(struct SingleLL *sll)
{
    if (sll->head == NULL)
    {
        printf("\n Empty linked list\n");
        return;
    }
    // Define auxiliary variable
    struct LinkNode *auxiliary = sll->head;
   
    int sum = 0;
    int product = 1;
    int status = 0;

    // iterate linked list elements
    while(auxiliary != NULL)
    {
        if(auxiliary->data >= 0 && (digitSum(auxiliary->data) % 2  == 0) )
        {

            // When digit sum is even
           status = 1;
           // Calculate sum
           sum += auxiliary->data;
           // Calculate product
           product *= auxiliary->data; 
        }
        // Visit to next node
        auxiliary = auxiliary->next;
    }

    if(status==0)
    {
        // When Even sum digits not present
        printf("\n None ");
    }
    else
    {
        // Display sum and product
        printf("\n Sum : %d",sum);
        printf("\n Product : %d\n",product);
    }

}
int main()
{
    // Define linked list
    struct SingleLL *sll = newLinkedList();

    //  Constructed linked list
    //  10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
    addNode(sll, 10);
    addNode(sll, 2);
    addNode(sll, 14);
    addNode(sll, 3);
    addNode(sll, 11);
    addNode(sll, 16);
    addNode(sll, 4);
    display(sll);
    // 2 + 11 + 4 = 17
    // 2 * 11 * 4 = 88
    evenSumProduct(sll);

    return 0;
}

Output

 10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL

 Sum : 17
 Product : 88
/*
  Java Program for
  Find sum and product of all even digit sum in a Singly Linked List
*/
// Linked list node
class LinkNode
{
    public int data;
    public LinkNode next;
    public LinkNode(int data)
    {
        this.data = data;
        this.next = null;
    }
}
public class SingleLL
{
    public LinkNode head;
    public LinkNode tail;
    public SingleLL()
    {
        this.head = null;
        this.tail = null;
    }
    //Add new Node at end of linked list 
    public void addNode(int data)
    {
        LinkNode node = new LinkNode(data);
        if (this.head == null)
        {
            this.head = node;
        }
        else
        {
            // Append the node at last position
            this.tail.next = node;
        }
        this.tail = node;
    }
    // Display linked list element
    public void display()
    {
        if (this.head == null)
        {
            System.out.print("\n Empty linked list\n");
            return;
        }
        LinkNode temp = this.head;
        //iterating linked list elements
        while (temp != null)
        {
            System.out.print(" " + temp.data + " →");
            // Visit to next node
            temp = temp.next;
        }
        System.out.print(" NULL\n");
    }
    // Returns the sum of digits of a given number
    public int digitSum(int num)
    {
        int sum = 0;
        int n = num;
        while (n > 0)
        {
            sum += n % 10;
            n = n / 10;
        }
        return sum;
    }
    //  Find the sum and product of even digit sum in linked list
    public void evenSumProduct()
    {
        if (this.head == null)
        {
            System.out.print("\n Empty linked list\n");
            return;
        }
        // Define auxiliary variable
        LinkNode auxiliary = this.head;
        int sum = 0;
        int product = 1;
        boolean status = false;
        // iterate linked list elements
        while (auxiliary != null)
        {
            if (auxiliary.data >= 0 && (this.digitSum(auxiliary.data) % 2 == 0))
            {
                // When digit sum is even
                status = true;
                // Calculate sum
                sum += auxiliary.data;
                // Calculate product
                product *= auxiliary.data;
            }
            // Visit to next node
            auxiliary = auxiliary.next;
        }
        if (status == false)
        {
            // When Even sum digits not present
            System.out.print("\n None ");
        }
        else
        {
            // Display sum and product
            System.out.print(" Sum : " + sum );
            System.out.print("\n Product : " + product + "\n");
        }
    }
    public static void main(String[] args)
    {
      
        SingleLL sll = new SingleLL();
        //  Constructed linked list
        //  10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
        sll.addNode(10);
        sll.addNode(2);
        sll.addNode(14);
        sll.addNode(3);
        sll.addNode(11);
        sll.addNode(16);
        sll.addNode(4);
        sll.display();
        // 2 + 11 + 4 = 17
        // 2 * 11 * 4 = 88
        sll.evenSumProduct();
    }
}

Output

 10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
 Sum : 17
 Product : 88
// Include header file
#include <iostream>
using namespace std;

/*
  C++ Program for
  Find sum and product of all even digit sum in a Singly Linked List
*/

// Linked list node
class LinkNode
{
	public: 
    int data;
	LinkNode *next;
	LinkNode(int data)
	{
		this->data = data;
		this->next = NULL;
	}
};
class SingleLL
{
	public: 
    LinkNode *head;
	LinkNode *tail;
	SingleLL()
	{
		this->head = NULL;
		this->tail = NULL;
	}
	//Add new Node at end of linked list
	void addNode(int data)
	{
		LinkNode *node = new LinkNode(data);
		if (this->head == NULL)
		{
			this->head = node;
		}
		else
		{
			// Append the node at last position
			this->tail->next = node;
		}
		this->tail = node;
	}
	// Display linked list element
	void display()
	{
		if (this->head == NULL)
		{
			cout << "\n Empty linked list\n";
			return;
		}
		LinkNode *temp = this->head;
		//iterating linked list elements
		while (temp != NULL)
		{
			cout << " " << temp->data << " →";
			// Visit to next node
			temp = temp->next;
		}
		cout << " NULL\n";
	}
	// Returns the sum of digits of a given number
	int digitSum(int num)
	{
		int sum = 0;
		int n = num;
		while (n > 0)
		{
			sum += n % 10;
			n = n / 10;
		}
		return sum;
	}
	//  Find the sum and product of even digit sum in linked list
	void evenSumProduct()
	{
		if (this->head == NULL)
		{
			cout << "\n Empty linked list\n";
			return;
		}
		// Define auxiliary variable
		LinkNode *auxiliary = this->head;
		int sum = 0;
		int product = 1;
		bool status = false;
		// iterate linked list elements
		while (auxiliary != NULL)
		{
			if (auxiliary->data >= 0 && (this->digitSum(auxiliary->data) % 2 == 0))
			{
				// When digit sum is even
				status = true;
				// Calculate sum
				sum += auxiliary->data;
				// Calculate product
				product *= auxiliary->data;
			}
			// Visit to next node
			auxiliary = auxiliary->next;
		}
		if (status == false)
		{
			// When Even sum digits not present
			cout << "\n None ";
		}
		else
		{
			// Display sum and product
			cout << " Sum : " << sum;
			cout << "\n Product : " << product << "\n";
		}
	}
};
int main()
{
	SingleLL sll = SingleLL();
	//  Constructed linked list
	//  10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
	sll.addNode(10);
	sll.addNode(2);
	sll.addNode(14);
	sll.addNode(3);
	sll.addNode(11);
	sll.addNode(16);
	sll.addNode(4);
	sll.display();
	// 2 + 11 + 4 = 17
	// 2 *11 *4 = 88
	sll.evenSumProduct();
	return 0;
}

Output

 10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
 Sum : 17
 Product : 88
// Include namespace system
using System;
/*
  C# Program for
  Find sum and product of all even digit sum in a Singly Linked List
*/
// Linked list node
public class LinkNode
{
	public int data;
	public LinkNode next;
	public LinkNode(int data)
	{
		this.data = data;
		this.next = null;
	}
}
public class SingleLL
{
	public LinkNode head;
	public LinkNode tail;
	public SingleLL()
	{
		this.head = null;
		this.tail = null;
	}
	//Add new Node at end of linked list
	public void addNode(int data)
	{
		LinkNode node = new LinkNode(data);
		if (this.head == null)
		{
			this.head = node;
		}
		else
		{
			// Append the node at last position
			this.tail.next = node;
		}
		this.tail = node;
	}
	// Display linked list element
	public void display()
	{
		if (this.head == null)
		{
			Console.Write("\n Empty linked list\n");
			return;
		}
		LinkNode temp = this.head;
		//iterating linked list elements
		while (temp != null)
		{
			Console.Write(" " + temp.data + " →");
			// Visit to next node
			temp = temp.next;
		}
		Console.Write(" NULL\n");
	}
	// Returns the sum of digits of a given number
	public int digitSum(int num)
	{
		int sum = 0;
		int n = num;
		while (n > 0)
		{
			sum += n % 10;
			n = n / 10;
		}
		return sum;
	}
	//  Find the sum and product of even digit sum in linked list
	public void evenSumProduct()
	{
		if (this.head == null)
		{
			Console.Write("\n Empty linked list\n");
			return;
		}
		// Define auxiliary variable
		LinkNode auxiliary = this.head;
		int sum = 0;
		int product = 1;
		Boolean status = false;
		// iterate linked list elements
		while (auxiliary != null)
		{
			if (auxiliary.data >= 0 && (this.digitSum(auxiliary.data) % 2 == 0))
			{
				// When digit sum is even
				status = true;
				// Calculate sum
				sum += auxiliary.data;
				// Calculate product
				product *= auxiliary.data;
			}
			// Visit to next node
			auxiliary = auxiliary.next;
		}
		if (status == false)
		{
			// When Even sum digits not present
			Console.Write("\n None ");
		}
		else
		{
			// Display sum and product
			Console.Write(" Sum : " + sum);
			Console.Write("\n Product : " + product + "\n");
		}
	}
	public static void Main(String[] args)
	{
		SingleLL sll = new SingleLL();
		//  Constructed linked list
		//  10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
		sll.addNode(10);
		sll.addNode(2);
		sll.addNode(14);
		sll.addNode(3);
		sll.addNode(11);
		sll.addNode(16);
		sll.addNode(4);
		sll.display();
		// 2 + 11 + 4 = 17
		// 2 * 11 * 4 = 88
		sll.evenSumProduct();
	}
}

Output

 10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
 Sum : 17
 Product : 88
<?php
/*
  Php Program for
  Find sum and product of all even digit sum in a Singly Linked List
*/
// Linked list node
class LinkNode
{
	public $data;
	public $next;

	function __construct($data)
	{
		$this->data = $data;
		$this->next = null;
	}
}
class SingleLL
{
	public $head;
	public $tail;

	function __construct()
	{
		$this->head = null;
		$this->tail = null;
	}
	//Add new Node at end of linked list
	public	function addNode($data)
	{
		$node = new LinkNode($data);
		if ($this->head == null)
		{
			$this->head = $node;
		}
		else
		{
			// Append the node at last position
			$this->tail->next = $node;
		}
		$this->tail = $node;
	}
	// Display linked list element
	public	function display()
	{
		if ($this->head == null)
		{
			echo "\n Empty linked list\n";
			return;
		}
		$temp = $this->head;
		//iterating linked list elements
		while ($temp != null)
		{
			echo " ". $temp->data ." →";
			// Visit to next node
			$temp = $temp->next;
		}
		echo " NULL\n";
	}
	// Returns the sum of digits of a given number
	public	function digitSum($num)
	{
		$sum = 0;
		$n = $num;
		while ($n > 0)
		{
			$sum += $n % 10;
			$n = intval($n / 10);
		}
		return $sum;
	}
	//  Find the sum and product of even digit sum in linked list
	public	function evenSumProduct()
	{
		if ($this->head == null)
		{
			echo "\n Empty linked list\n";
			return;
		}
		// Define auxiliary variable
		$auxiliary = $this->head;
		$sum = 0;
		$product = 1;
		$status = false;
		// iterate linked list elements
		while ($auxiliary != null)
		{
			if ($auxiliary->data >= 0 && ($this->digitSum($auxiliary->data) % 2 == 0))
			{
				// When digit sum is even
				$status = true;
				// Calculate sum
				$sum += $auxiliary->data;
				// Calculate product
				$product *= $auxiliary->data;
			}
			// Visit to next node
			$auxiliary = $auxiliary->next;
		}
		if ($status == false)
		{
			// When Even sum digits not present
			echo "\n None ";
		}
		else
		{
			// Display sum and product
			echo " Sum : ". $sum;
			echo "\n Product : ". $product ."\n";
		}
	}
}

function main()
{
	$sll = new SingleLL();
	//  Constructed linked list
	//  10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
	$sll->addNode(10);
	$sll->addNode(2);
	$sll->addNode(14);
	$sll->addNode(3);
	$sll->addNode(11);
	$sll->addNode(16);
	$sll->addNode(4);
	$sll->display();
	// 2 + 11 + 4 = 17
	// 2 * 11 * 4 = 88
	$sll->evenSumProduct();
}
main();

Output

 10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
 Sum : 17
 Product : 88
/*
  Node Js Program for
  Find sum and product of all even digit sum in a Singly Linked List
*/
// Linked list node
class LinkNode
{
	constructor(data)
	{
		this.data = data;
		this.next = null;
	}
}
class SingleLL
{
	constructor()
	{
		this.head = null;
		this.tail = null;
	}
	//Add new Node at end of linked list
	addNode(data)
	{
		var node = new LinkNode(data);
		if (this.head == null)
		{
			this.head = node;
		}
		else
		{
			// Append the node at last position
			this.tail.next = node;
		}
		this.tail = node;
	}
	// Display linked list element
	display()
	{
		if (this.head == null)
		{
			process.stdout.write("\n Empty linked list\n");
			return;
		}
		var temp = this.head;
		//iterating linked list elements
		while (temp != null)
		{
			process.stdout.write(" " + temp.data + " →");
			// Visit to next node
			temp = temp.next;
		}
		process.stdout.write(" NULL\n");
	}
	// Returns the sum of digits of a given number
	digitSum(num)
	{
		var sum = 0;
		var n = num;
		while (n > 0)
		{
			sum += n % 10;
			n = parseInt(n / 10);
		}
		return sum;
	}
	//  Find the sum and product of even digit sum in linked list
	evenSumProduct()
	{
		if (this.head == null)
		{
			process.stdout.write("\n Empty linked list\n");
			return;
		}
		// Define auxiliary variable
		var auxiliary = this.head;
		var sum = 0;
		var product = 1;
		var status = false;
		// iterate linked list elements
		while (auxiliary != null)
		{
			if (auxiliary.data >= 0 && (this.digitSum(auxiliary.data) % 2 == 0))
			{
				// When digit sum is even
				status = true;
				// Calculate sum
				sum += auxiliary.data;
				// Calculate product
				product *= auxiliary.data;
			}
			// Visit to next node
			auxiliary = auxiliary.next;
		}
		if (status == false)
		{
			// When Even sum digits not present
			process.stdout.write("\n None ");
		}
		else
		{
			// Display sum and product
			process.stdout.write(" Sum : " + sum);
			process.stdout.write("\n Product : " + product + "\n");
		}
	}
}

function main()
{
	var sll = new SingleLL();
	//  Constructed linked list
	//  10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
	sll.addNode(10);
	sll.addNode(2);
	sll.addNode(14);
	sll.addNode(3);
	sll.addNode(11);
	sll.addNode(16);
	sll.addNode(4);
	sll.display();
	// 2 + 11 + 4 = 17
	// 2 * 11 * 4 = 88
	sll.evenSumProduct();
}
main();

Output

 10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
 Sum : 17
 Product : 88
#   Python 3 Program for
#   Find sum and product of all even digit sum in a Singly Linked List

#  Linked list node
class LinkNode :
	
	def __init__(self, data) :
		self.data = data
		self.next = None
	

class SingleLL :
	
	def __init__(self) :
		self.head = None
		self.tail = None
	
	# Add new Node at end of linked list 
	def addNode(self, data) :
		node = LinkNode(data)
		if (self.head == None) :
			self.head = node
		else :
			#  Append the node at last position
			self.tail.next = node
		
		self.tail = node
	
	#  Display linked list element
	def display(self) :
		if (self.head == None) :
			print("\n Empty linked list")
			return
		
		temp = self.head
		# iterating linked list elements
		while (temp != None) :
			print("", temp.data ,"→", end = "")
			#  Visit to next node
			temp = temp.next
		
		print(" NULL")
	
	#  Returns the sum of digits of a given number
	def digitSum(self, num) :
		sum = 0
		n = num
		while (n > 0) :
			sum += n % 10
			n = int(n / 10)
		
		return sum
	
	#   Find the sum and product of even digit sum in linked list
	def evenSumProduct(self) :
		if (self.head == None) :
			print("\n Empty linked list")
			return
		
		#  Define auxiliary variable
		auxiliary = self.head
		sum = 0
		product = 1
		status = False
		#  iterate linked list elements
		while (auxiliary != None) :
			if (auxiliary.data >= 0 and(self.digitSum(auxiliary.data) % 2 == 0)) :
				#  When digit sum is even
				status = True
				#  Calculate sum
				sum += auxiliary.data
				#  Calculate product
				product *= auxiliary.data
			
			#  Visit to next node
			auxiliary = auxiliary.next
		
		if (status == False) :
			#  When Even sum digits not present
			print("\n None ", end = "")
		else :
			#  Display sum and product
			print(" Sum : ", sum, end = "")
			print("\n Product : ", product )
		
	

def main() :
	sll = SingleLL()
	#   Constructed linked list
	#   10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
	sll.addNode(10)
	sll.addNode(2)
	sll.addNode(14)
	sll.addNode(3)
	sll.addNode(11)
	sll.addNode(16)
	sll.addNode(4)
	sll.display()
	#  2 + 11 + 4 = 17
	#  2 * 11 * 4 = 88
	sll.evenSumProduct()

if __name__ == "__main__": main()

Output

 10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
 Sum :  17
 Product :  88
#   Ruby Program for
#   Find sum and product of all even digit sum in a Singly Linked List

#  Linked list node
class LinkNode  
	# Define the accessor and reader of class LinkNode  
	attr_reader :data, :next
	attr_accessor :data, :next
 
	
	def initialize(data) 
		self.data = data
		self.next = nil
	end

end

class SingleLL  
	# Define the accessor and reader of class SingleLL  
	attr_reader :head, :tail
	attr_accessor :head, :tail
 
	
	def initialize() 
		self.head = nil
		self.tail = nil
	end

	# Add new Node at end of linked list 
	def addNode(data) 
		node = LinkNode.new(data)
		if (self.head == nil) 
			self.head = node
		else 
			#  Append the node at last position
			self.tail.next = node
		end

		self.tail = node
	end

	#  Display linked list element
	def display() 
		if (self.head == nil) 
			print("\n Empty linked list\n")
			return
		end

		temp = self.head
		# iterating linked list elements
		while (temp != nil) 
			print(" ", temp.data ," →")
			#  Visit to next node
			temp = temp.next
		end

		print(" NULL\n")
	end

	#  Returns the sum of digits of a given number
	def digitSum(num) 
		sum = 0
		n = num
		while (n > 0) 
			sum += n % 10
			n = n / 10
		end

		return sum
	end

	#   Find the sum and product of even digit sum in linked list
	def evenSumProduct() 
		if (self.head == nil) 
			print("\n Empty linked list\n")
			return
		end

		#  Define auxiliary variable
		auxiliary = self.head
		sum = 0
		product = 1
		status = false
		#  iterate linked list elements
		while (auxiliary != nil) 
			if (auxiliary.data >= 0 && (self.digitSum(auxiliary.data) % 2 == 0)) 
				#  When digit sum is even
				status = true
				#  Calculate sum
				sum += auxiliary.data
				#  Calculate product
				product *= auxiliary.data
			end

			#  Visit to next node
			auxiliary = auxiliary.next
		end

		if (status == false) 
			#  When Even sum digits not present
			print("\n None ")
		else 
			#  Display sum and product
			print(" Sum : ", sum)
			print("\n Product : ", product ,"\n")
		end

	end

end

def main() 
	sll = SingleLL.new()
	#   Constructed linked list
	#   10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
	sll.addNode(10)
	sll.addNode(2)
	sll.addNode(14)
	sll.addNode(3)
	sll.addNode(11)
	sll.addNode(16)
	sll.addNode(4)
	sll.display()
	#  2 + 11 + 4 = 17
	#  2 * 11 * 4 = 88
	sll.evenSumProduct()
end

main()

Output

 10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
 Sum : 17
 Product : 88
/*
  Scala Program for
  Find sum and product of all even digit sum in a Singly Linked List
*/
// Linked list node
class LinkNode(var data: Int , var next: LinkNode)
{
	def this(data: Int)
	{
		this(data, null);
	}
}
class SingleLL(var head: LinkNode , var tail: LinkNode)
{
	def this()
	{
		this(null, null);
	}
	//Add new Node at end of linked list
	def addNode(data: Int): Unit = {
		var node: LinkNode = new LinkNode(data);
		if (this.head == null)
		{
			this.head = node;
		}
		else
		{
			// Append the node at last position
			this.tail.next = node;
		}
		this.tail = node;
	}
	// Display linked list element
	def display(): Unit = {
		if (this.head == null)
		{
			print("\n Empty linked list\n");
			return;
		}
		var temp: LinkNode = this.head;
		//iterating linked list elements
		while (temp != null)
		{
			print(" " + temp.data + " →");
			// Visit to next node
			temp = temp.next;
		}
		print(" NULL\n");
	}
	// Returns the sum of digits of a given number
	def digitSum(num: Int): Int = {
		var sum: Int = 0;
		var n: Int = num;
		while (n > 0)
		{
			sum += n % 10;
			n = (n / 10).toInt;
		}
		return sum;
	}
	//  Find the sum and product of even digit sum in linked list
	def evenSumProduct(): Unit = {
		if (this.head == null)
		{
			print("\n Empty linked list\n");
			return;
		}
		// Define auxiliary variable
		var auxiliary: LinkNode = this.head;
		var sum: Int = 0;
		var product: Int = 1;
		var status: Boolean = false;
		// iterate linked list elements
		while (auxiliary != null)
		{
			if (auxiliary.data >= 0 && (this.digitSum(auxiliary.data) % 2 == 0))
			{
				// When digit sum is even
				status = true;
				// Calculate sum
				sum += auxiliary.data;
				// Calculate product
				product *= auxiliary.data;
			}
			// Visit to next node
			auxiliary = auxiliary.next;
		}
		if (status == false)
		{
			// When Even sum digits not present
			print("\n None ");
		}
		else
		{
			// Display sum and product
			print(" Sum : " + sum);
			print("\n Product : " + product + "\n");
		}
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var sll: SingleLL = new SingleLL();
		//  Constructed linked list
		//  10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
		sll.addNode(10);
		sll.addNode(2);
		sll.addNode(14);
		sll.addNode(3);
		sll.addNode(11);
		sll.addNode(16);
		sll.addNode(4);
		sll.display();
		// 2 + 11 + 4 = 17
		// 2 * 11 * 4 = 88
		sll.evenSumProduct();
	}
}

Output

 10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
 Sum : 17
 Product : 88
/*
  Swift 4 Program for
  Find sum and product of all even digit sum in a Singly Linked List
*/
// Linked list node
class LinkNode
{
	var data: Int;
	var next: LinkNode? ;
	init(_ data: Int)
	{
		self.data = data;
		self.next = nil;
	}
}
class SingleLL
{
	var head: LinkNode? ;
	var tail: LinkNode? ;
	init()
	{
		self.head = nil;
		self.tail = nil;
	}
	//Add new Node at end of linked list
	func addNode(_ data: Int)
	{
		let node: LinkNode? = LinkNode(data);
		if (self.head == nil)
		{
			self.head = node;
		}
		else
		{
			// Append the node at last position
			self.tail!.next = node;
		}
		self.tail = node;
	}
	// Display linked list element
	func display()
	{
		if (self.head == nil)
		{
			print("\n Empty linked list");
			return;
		}
		var temp: LinkNode? = self.head;
		//iterating linked list elements
		while (temp  != nil)
		{
			print(" ", temp!.data ," →", terminator: "");
			// Visit to next node
			temp = temp!.next;
		}
		print(" NULL");
	}
	// Returns the sum of digits of a given number
	func digitSum(_ num: Int)->Int
	{
		var sum: Int = 0;
		var n: Int = num;
		while (n > 0)
		{
			sum += n % 10;
			n = n / 10;
		}
		return sum;
	}
	//  Find the sum and product of even digit sum in linked list
	func evenSumProduct()
	{
		if (self.head == nil)
		{
			print("\n Empty linked list");
			return;
		}
		// Define auxiliary variable
		var auxiliary: LinkNode? = self.head;
		var sum: Int = 0;
		var product: Int = 1;
		var status: Bool = false;
		// iterate linked list elements
		while (auxiliary  != nil)
		{
			if (auxiliary!.data >= 0 && (self.digitSum(auxiliary!.data) % 2 == 0))
			{
				// When digit sum is even
				status = true;
				// Calculate sum
				sum += auxiliary!.data;
				// Calculate product
				product *= auxiliary!.data;
			}
			// Visit to next node
			auxiliary = auxiliary!.next;
		}
		if (status == false)
		{
			// When Even sum digits not present
			print("\n None ", terminator: "");
		}
		else
		{
			// Display sum and product
			print(" Sum : ", sum, terminator: "");
			print("\n Product : ", product );
		}
	}
}
func main()
{
	let sll: SingleLL = SingleLL();
	//  Constructed linked list
	//  10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
	sll.addNode(10);
	sll.addNode(2);
	sll.addNode(14);
	sll.addNode(3);
	sll.addNode(11);
	sll.addNode(16);
	sll.addNode(4);
	sll.display();
	// 2 + 11 + 4 = 17
	// 2 * 11 * 4 = 88
	sll.evenSumProduct();
}
main();

Output

  10  →  2  →  14  →  3  →  11  →  16  →  4  → NULL
 Sum :  17
 Product :  88
/*
  Kotlin Program for
  Find sum and product of all even digit sum in a Singly Linked List
*/
// Linked list node
class LinkNode
{
	var data: Int;
	var next: LinkNode ? ;
	constructor(data: Int)
	{
		this.data = data;
		this.next = null;
	}
}
class SingleLL
{
	var head: LinkNode ? ;
	var tail: LinkNode ? ;
	constructor()
	{
		this.head = null;
		this.tail = null;
	}
	//Add new Node at end of linked list
	fun addNode(data: Int): Unit
	{
		var node: LinkNode = LinkNode(data);
		if (this.head == null)
		{
			this.head = node;
		}
		else
		{
			// Append the node at last position
			this.tail?.next = node;
		}
		this.tail = node;
	}
	// Display linked list element
	fun display(): Unit
	{
		if (this.head == null)
		{
			print("\n Empty linked list\n");
			return;
		}
		var temp: LinkNode ? = this.head;
		//iterating linked list elements
		while (temp != null)
		{
			print(" " + temp.data + " →");
			// Visit to next node
			temp = temp.next;
		}
		print(" NULL\n");
	}
	// Returns the sum of digits of a given number
	fun digitSum(num: Int): Int
	{
		var sum: Int = 0;
		var n: Int = num;
		while (n > 0)
		{
			sum += n % 10;
			n = n / 10;
		}
		return sum;
	}
	//  Find the sum and product of even digit sum in linked list
	fun evenSumProduct(): Unit
	{
		if (this.head == null)
		{
			print("\n Empty linked list\n");
			return;
		}
		// Define auxiliary variable
		var auxiliary: LinkNode ? = this.head;
		var sum: Int = 0;
		var product: Int = 1;
		var status: Boolean = false;
		// iterate linked list elements
		while (auxiliary != null)
		{
			if (auxiliary.data >= 0 && (this.digitSum(auxiliary.data) % 2 == 0))
			{
				// When digit sum is even
				status = true;
				// Calculate sum
				sum += auxiliary.data;
				// Calculate product
				product *= auxiliary.data;
			}
			// Visit to next node
			auxiliary = auxiliary.next;
		}
		if (status == false)
		{
			// When Even sum digits not present
			print("\n None ");
		}
		else
		{
			// Display sum and product
			print(" Sum : " + sum);
			print("\n Product : " + product + "\n");
		}
	}
}
fun main(args: Array <String> ): Unit
{
	var sll: SingleLL = SingleLL();
	//  Constructed linked list
	//  10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
	sll.addNode(10);
	sll.addNode(2);
	sll.addNode(14);
	sll.addNode(3);
	sll.addNode(11);
	sll.addNode(16);
	sll.addNode(4);
	sll.display();
	// 2 + 11 + 4 = 17
	// 2 * 11 * 4 = 88
	sll.evenSumProduct();
}

Output

 10 → 2 → 14 → 3 → 11 → 16 → 4 → NULL
 Sum : 17
 Product : 88




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