Skip to main content

Sum of palindromic numbers in a linked list

Here given code implementation process.

// C Program
// Sum of palindromic numbers in a 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 List : ");
	//iterating linked list elements
	while (temp != NULL)
	{
		printf("  %d", temp->data);
		//visit to next node
		temp = temp->next;
	}
	printf("\n");
}
//Check that whether given number is palindrome or not
int is_palindrome(int num)
{
	if (num < 0)
	{
		//negative number is not a part of palindrome number
		return 0;
	}
	int result = 0;
	int x = num;
	//Reversing the given number digit
	while (x != 0)
	{
		result = (result *10) + (x % 10);
		x = x / 10;
	}
	//true, when reverse number is equal to given num
	return result == num;
}
//Calculate sum of all nodes that value is form of palindrome
void sum_of_palindrome(struct Node *head)
{
	//Display element of linked list 
	display(head);
	//Define resultant variable
	int result = 0;
	//Get first node
	struct Node *temp = head;
	printf(" Palindrome Nodes : [");
	//iterating linked list elements
	while (temp != NULL)
	{
		if (is_palindrome(temp->data) == 1)
		{
			printf("  %d", temp->data);
			result += temp->data;
		}
		//visit to next node
		temp = temp->next;
	}
	printf("  ]\n");
	//Display the calculated result
	printf(" Total Sum :  %d \n", result);
}
int main()
{
	struct Node *head = NULL;
	//Create linked list
	insert( &head, 21);
	insert( &head, 111);
	insert( &head, 212);
	insert( &head, 11);
	insert( &head, 112);
	insert( &head, 7);
	insert( &head, -121);
	insert( &head, 124);
	insert( &head, 121);
	sum_of_palindrome(head);
	return 0;
}

Output

 Linked List :   21  111  212  11  112  7  -121  124  121
 Palindrome Nodes : [  111  212  11  7  121  ]
 Total Sum :  462
// Java Program
// Sum of palindromic numbers in a 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 : ");
		//iterating linked list elements
		while (temp != null)
		{
			//display node value
			System.out.print("  " + temp.data);
			//visit to next node
			temp = temp.next;
		}
		System.out.print("\n");
	}
	//Check that whether given number is palindrome or not
	public boolean is_palindrome(int num)
	{
		if (num < 0)
		{
			return false;
		}
		//get given number
		int x = num;
		int result = 0;
		//Reversing the given number digit
		while (x != 0)
		{
			result = (result * 10) + (x % 10);
			x = x / 10;
		}
		//true, when reverse number is equal to given num
		return result == num;
	}
	//Calculate sum of all nodes that value is form of palindrome
	public void sum_of_palindrome()
	{
		//Display element of linked list 
		this.display();
		//Define resultant variable
		int result = 0;
		//Get first node
		Node temp = head;
		System.out.print(" Palindrome Nodes : [");
		//iterating linked list elements
		while (temp != null)
		{
			if (is_palindrome(temp.data) == true)
			{
				System.out.print(" " + temp.data);
				result += temp.data;
			}
			//visit to next node
			temp = temp.next;
		}
		System.out.print(" ]\n");
		//Display the calculated result
		System.out.print(" Total Sum :  " + result + " \n");
	}
	public static void main(String[] args)
	{
		MyLinkedList obj = new MyLinkedList();
		//Create linked list
		obj.insert(21);
		obj.insert(111);
		obj.insert(212);
		obj.insert(11);
		obj.insert(112);
		obj.insert(7);
		obj.insert(-121);
		obj.insert(124);
		obj.insert(121);
		obj.sum_of_palindrome();
	}
}

Output

 Linked List :   21  111  212  11  112  7  -121  124  121
 Palindrome Nodes : [ 111 212 11 7 121 ]
 Total Sum :  462
//Include header file
#include <iostream>

using namespace std;
// C++ Program
// Sum of palindromic numbers in a 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 : ";
		//iterating linked list elements
		while (temp != NULL)
		{
			//display node value
			cout << "  " << temp->data;
			//visit to next node
			temp = temp->next;
		}
		cout << "\n";
	}
	//Check that whether given number is palindrome or not
	bool is_palindrome(int num)
	{
		if (num < 0)
		{
			return false;
		}
		//get given number
		int x = num;
		int result = 0;
		//Reversing the given number digit
		while (x != 0)
		{
			result = (result * 10) + (x % 10);
			x = x / 10;
		}
		//true, when reverse number is equal to given num
		return result == num;
	}
	//Calculate sum of all nodes that value is form of palindrome
	void sum_of_palindrome()
	{
		//Display element of linked list 
		this->display();
		//Define resultant variable
		int result = 0;
		//Get first node
		Node * temp = this->head;
		cout << " Palindrome Nodes : [";
		//iterating linked list elements
		while (temp != NULL)
		{
			if (this->is_palindrome(temp->data) == true)
			{
				cout << " " << temp->data;
				result += temp->data;
			}
			//visit to next node
			temp = temp->next;
		}
		cout << " ]\n";
		//Display the calculated result
		cout << " Total Sum :  " << result << " \n";
	}
};
int main()
{
	MyLinkedList obj = MyLinkedList();
	//Create linked list
	obj.insert(21);
	obj.insert(111);
	obj.insert(212);
	obj.insert(11);
	obj.insert(112);
	obj.insert(7);
	obj.insert(-121);
	obj.insert(124);
	obj.insert(121);
	obj.sum_of_palindrome();
	return 0;
}

Output

 Linked List :   21  111  212  11  112  7  -121  124  121
 Palindrome Nodes : [ 111 212 11 7 121 ]
 Total Sum :  462
//Include namespace system
using System;
// C# Program
// Sum of palindromic numbers in a 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 : ");
		//iterating linked list elements
		while (temp != null)
		{
			//display node value
			Console.Write("  " + temp.data);
			//visit to next node
			temp = temp.next;
		}
		Console.Write("\n");
	}
	//Check that whether given number is palindrome or not
	public Boolean is_palindrome(int num)
	{
		if (num < 0)
		{
			return false;
		}
		//get given number
		int x = num;
		int result = 0;
		//Reversing the given number digit
		while (x != 0)
		{
			result = (result * 10) + (x % 10);
			x = x / 10;
		}
		//true, when reverse number is equal to given num
		return result == num;
	}
	//Calculate sum of all nodes that value is form of palindrome
	public void sum_of_palindrome()
	{
		//Display element of linked list 
		this.display();
		//Define resultant variable
		int result = 0;
		//Get first node
		Node temp = head;
		Console.Write(" Palindrome Nodes : [");
		//iterating linked list elements
		while (temp != null)
		{
			if (is_palindrome(temp.data) == true)
			{
				Console.Write(" " + temp.data);
				result += temp.data;
			}
			//visit to next node
			temp = temp.next;
		}
		Console.Write(" ]\n");
		//Display the calculated result
		Console.Write(" Total Sum :  " + result + " \n");
	}
	public static void Main(String[] args)
	{
		MyLinkedList obj = new MyLinkedList();
		//Create linked list
		obj.insert(21);
		obj.insert(111);
		obj.insert(212);
		obj.insert(11);
		obj.insert(112);
		obj.insert(7);
		obj.insert(-121);
		obj.insert(124);
		obj.insert(121);
		obj.sum_of_palindrome();
	}
}

Output

 Linked List :   21  111  212  11  112  7  -121  124  121
 Palindrome Nodes : [ 111 212 11 7 121 ]
 Total Sum :  462
<?php
// Php Program
// Sum of palindromic numbers in a 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 : ";
		//iterating linked list elements
		while ($temp != null)
		{
			//display node value
			echo "  ". $temp->data;
			//visit to next node
			$temp = $temp->next;
		}
		echo "\n";
	}
	//Check that whether given number is palindrome or not
	public	function is_palindrome($num)
	{
		if ($num < 0)
		{
			return false;
		}
		//get given number
		$x = $num;
		$result = 0;
		//Reversing the given number digit
		while ($x != 0)
		{
			$result = ($result * 10) + ($x % 10);
			$x = intval($x / 10);
		}
		//true, when reverse number is equal to given num
		return $result == $num;
	}
	//Calculate sum of all nodes that value is form of palindrome
	public	function sum_of_palindrome()
	{
		//Display element of linked list 
		$this->display();
		//Define resultant variable
		$result = 0;
		//Get first node
		$temp = $this->head;
		echo " Palindrome Nodes : [";
		//iterating linked list elements
		while ($temp != null)
		{
			if ($this->is_palindrome($temp->data) == true)
			{
				echo " ". $temp->data;
				$result += $temp->data;
			}
			//visit to next node
			$temp = $temp->next;
		}
		echo " ]\n";
		//Display the calculated result
		echo " Total Sum :  ". $result ." \n";
	}
}

function main()
{
	$obj = new MyLinkedList();
	//Create linked list
	$obj->insert(21);
	$obj->insert(111);
	$obj->insert(212);
	$obj->insert(11);
	$obj->insert(112);
	$obj->insert(7);
	$obj->insert(-121);
	$obj->insert(124);
	$obj->insert(121);
	$obj->sum_of_palindrome();
}
main();

Output

 Linked List :   21  111  212  11  112  7  -121  124  121
 Palindrome Nodes : [ 111 212 11 7 121 ]
 Total Sum :  462
// Node Js Program
// Sum of palindromic numbers in a 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 : ");
		//iterating linked list elements
		while (temp != null)
		{
			//display node value
			process.stdout.write("  " + temp.data);
			//visit to next node
			temp = temp.next;
		}
		process.stdout.write("\n");
	}
	//Check that whether given number is palindrome or not
	is_palindrome(num)
	{
		if (num < 0)
		{
			return false;
		}
		//get given number
		var x = num;
		var result = 0;
		//Reversing the given number digit
		while (x != 0)
		{
			result = (result * 10) + (x % 10);
			x = parseInt(x / 10);
		}
		//true, when reverse number is equal to given num
		return result == num;
	}
	//Calculate sum of all nodes that value is form of palindrome
	sum_of_palindrome()
	{
		//Display element of linked list 
		this.display();
		//Define resultant variable
		var result = 0;
		//Get first node
		var temp = this.head;
		process.stdout.write(" Palindrome Nodes : [");
		//iterating linked list elements
		while (temp != null)
		{
			if (this.is_palindrome(temp.data) == true)
			{
				process.stdout.write(" " + temp.data);
				result += temp.data;
			}
			//visit to next node
			temp = temp.next;
		}
		process.stdout.write(" ]\n");
		//Display the calculated result
		process.stdout.write(" Total Sum :  " + result + " \n");
	}
}

function main()
{
	var obj = new MyLinkedList();
	//Create linked list
	obj.insert(21);
	obj.insert(111);
	obj.insert(212);
	obj.insert(11);
	obj.insert(112);
	obj.insert(7);
	obj.insert(-121);
	obj.insert(124);
	obj.insert(121);
	obj.sum_of_palindrome();
}
main();

Output

 Linked List :   21  111  212  11  112  7  -121  124  121
 Palindrome Nodes : [ 111 212 11 7 121 ]
 Total Sum :  462
#  Python 3 Program
#  Sum of palindromic numbers in a 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 = "")
		# iterating linked list elements
		while (temp != None) :
			# display node value
			print("  ", temp.data, end = "")
			# visit to next node
			temp = temp.next
		
		print(end = "\n")
	
	# Check that whether given number is palindrome or not
	def is_palindrome(self, num) :
		if (num < 0) :
			return False
		
		# get given number
		x = num
		result = 0
		# Reversing the given number digit
		while (x != 0) :
			result = (result * 10) + (x % 10)
			x = int(x / 10)
		
		# true, when reverse number is equal to given num
		return result == num
	
	# Calculate sum of all nodes that value is form of palindrome
	def sum_of_palindrome(self) :
		# Display element of linked list 
		self.display()
		# Define resultant variable
		result = 0
		# Get first node
		temp = self.head
		print(" Palindrome Nodes : [", end = "")
		# iterating linked list elements
		while (temp != None) :
			if (self.is_palindrome(temp.data) == True) :
				print(" ", temp.data, end = "")
				result += temp.data
			
			# visit to next node
			temp = temp.next
		
		print(" ]")
		# Display the calculated result
		print(" Total Sum :  ", result )
	

def main() :
	obj = MyLinkedList()
	# Create linked list
	obj.insert(21)
	obj.insert(111)
	obj.insert(212)
	obj.insert(11)
	obj.insert(112)
	obj.insert(7)
	obj.insert(-121)
	obj.insert(124)
	obj.insert(121)
	obj.sum_of_palindrome()

if __name__ == "__main__": main()

Output

 Linked List :    21   111   212   11   112   7   -121   124   121
 Palindrome Nodes : [  111  212  11  7  121 ]
 Total Sum :   462
#  Ruby Program
#  Sum of palindromic numbers in a 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 : ")
		# iterating linked list elements
		while (temp != nil)
		
			# display node value
			print("  ", temp.data)
			# visit to next node
			temp = temp.next
		end
		print("\n")
	end
	# Check that whether given number is palindrome or not
	def is_palindrome(num)
	
		if (num < 0)
		
			return false
		end
		# get given number
		x = num
		result = 0
		# Reversing the given number digit
		while (x != 0)
		
			result = (result * 10) + (x % 10)
			x = x / 10
		end
		# true, when reverse number is equal to given num
		return result == num
	end
	# Calculate sum of all nodes that value is form of palindrome
	def sum_of_palindrome()
	
		# Display element of linked list 
		self.display()
		# Define resultant variable
		result = 0
		# Get first node
		temp = @head
		print(" Palindrome Nodes : [")
		# iterating linked list elements
		while (temp != nil)
		
			if (self.is_palindrome(temp.data) == true)
			
				print(" ", temp.data)
				result += temp.data
			end
			# visit to next node
			temp = temp.next
		end
		print(" ]\n")
		# Display the calculated result
		print(" Total Sum :  ", result ," \n")
	end
end
def main()

	obj = MyLinkedList.new()
	# Create linked list
	obj.insert(21)
	obj.insert(111)
	obj.insert(212)
	obj.insert(11)
	obj.insert(112)
	obj.insert(7)
	obj.insert(-121)
	obj.insert(124)
	obj.insert(121)
	obj.sum_of_palindrome()
end
main()

Output

 Linked List :   21  111  212  11  112  7  -121  124  121
 Palindrome Nodes : [ 111 212 11 7 121 ]
 Total Sum :  462 
// Scala Program
// Sum of palindromic numbers in a 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 : ");
		//iterating linked list elements
		while (temp != null)
		{
			//display node value
			print("  " + temp.data);
			//visit to next node
			temp = temp.next;
		}
		print("\n");
	}
	//Check that whether given number is palindrome or not
	def is_palindrome(num: Int): Boolean = {
		if (num < 0)
		{
			return false;
		}
		//get given number
		var x: Int = num;
		var result: Int = 0;
		//Reversing the given number digit
		while (x != 0)
		{
			result = (result * 10) + (x % 10);
			x = (x / 10).toInt;
		}
		//true, when reverse number is equal to given num
		return result == num;
	}
	//Calculate sum of all nodes that value is form of palindrome
	def sum_of_palindrome(): Unit = {
		//Display element of linked list 
		this.display();
		//Define resultant variable
		var result: Int = 0;
		//Get first node
		var temp: Node = head;
		print(" Palindrome Nodes : [");
		//iterating linked list elements
		while (temp != null)
		{
			if (is_palindrome(temp.data) == true)
			{
				print(" " + temp.data);
				result += temp.data;
			}
			//visit to next node
			temp = temp.next;
		}
		print(" ]\n");
		//Display the calculated result
		print(" Total Sum :  " + result + " \n");
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var obj: MyLinkedList = new MyLinkedList();
		//Create linked list
		obj.insert(21);
		obj.insert(111);
		obj.insert(212);
		obj.insert(11);
		obj.insert(112);
		obj.insert(7);
		obj.insert(-121);
		obj.insert(124);
		obj.insert(121);
		obj.sum_of_palindrome();
	}
}

Output

 Linked List :   21  111  212  11  112  7  -121  124  121
 Palindrome Nodes : [ 111 212 11 7 121 ]
 Total Sum :  462
// Swift Program
// Sum of palindromic numbers in a 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: "");
		//iterating linked list elements
		while (temp != nil)
		{
			//display node value
			print("  ", temp!.data, terminator: "");
			//visit to next node
			temp = temp!.next;
		}
		print("\n", terminator: "");
	}
	//Check that whether given number is palindrome or not
	func is_palindrome(_ num: Int) -> Bool
	{
		if (num < 0)
		{
			return false;
		}
		//get given number
		var x: Int = num;
		var result: Int = 0;
		//Reversing the given number digit
		while (x != 0)
		{
			result = (result * 10) + (x % 10);
			x = x / 10;
		}
		//true, when reverse number is equal to given num
		return result == num;
	}
	//Calculate sum of all nodes that value is form of palindrome
	func sum_of_palindrome()
	{
		//Display element of linked list 
		self.display();
		//Define resultant variable
		var result: Int = 0;
		//Get first node
		var temp: Node? = self.head;
		print(" Palindrome Nodes : [", terminator: "");
		//iterating linked list elements
		while (temp != nil)
		{
			if (self.is_palindrome(temp!.data) == true)
			{
				print(" ", temp!.data, terminator: "");
				result += temp!.data;
			}
			//visit to next node
			temp = temp!.next;
		}
		print(" ]\n", terminator: "");
		//Display the calculated result
		print(" Total Sum :  ", result ," \n", terminator: "");
	}
}
func main()
{
	let obj: MyLinkedList = MyLinkedList();
	//Create linked list
	obj.insert(21);
	obj.insert(111);
	obj.insert(212);
	obj.insert(11);
	obj.insert(112);
	obj.insert(7);
	obj.insert(-121);
	obj.insert(124);
	obj.insert(121);
	obj.sum_of_palindrome();
}
main();

Output

 Linked List :    21   111   212   11   112   7   -121   124   121
 Palindrome Nodes : [  111  212  11  7  121 ]
 Total Sum :   462




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