Q:

Find the largest element in a doubly linked list | C program

0

Find the largest element in a doubly linked list | C program

All Answers

need an explanation for this answer? contact us directly to get an explanation for this answer

Algorithm:

Function: largest_DLL()

Input: A doubly linked list whose address of the first node is stored in a pointer say head

Output: The largest no of the linked list say max

Data structure used: A doubly linked list where each node contains a data part, say data and two link parts say prev (to store the address of immediate previous node) and say next (to store the address of immediate next node).

Pseudo code:

Begin
temp=head
max=temp->data //max to store maximum
while(temp!=NULL)
begin
	if(temp->data>max)
		max=temp->data
		temp=temp->next
	end if
end while
End

C code:

#include <stdio.h>
#include <stdlib.h>

typedef struct list
{
	int data; 
	struct list *next;
	struct list *prev;
}node;

void display(node *temp)
{
	printf("The list is as follows :\n");
	while(temp!=NULL)
	{
		printf("%d->",temp->data);
		temp=temp->next;
	}
	printf("NULL");
	return;
}

int main(){
	node *head=NULL,*temp,*temp1;
	int choice,max;
	
	//Taking the linked list as input
	do
	{
		temp=(node *)malloc(sizeof(node));
		if(temp!=NULL)
		{
			printf("\nEnter the element in the list : ");
			scanf("%d",&temp->data);
			temp->next=NULL;
			if(head==NULL)
			{	
				temp->prev=head;
				temp->next=head;
				head=temp;
			}
			else
			{
				temp1=head;
				while(temp1->next!=NULL)
				{
					temp1=temp1->next;
				}
				temp1->next=temp;
				temp->prev=temp1;
			}
		}
		else
		{
			printf("\nMemory not avilable...node allocation is not possible");
		}
		printf("\nIf you wish to add more data on the list enter 1 : ");
		scanf("%d",&choice);
	}while(choice==1);
	
	display(head);
	
	//finding max
	temp=head;
	max=temp->data;
	while(temp!=NULL)
	{
		if(temp->data>max)
			max=temp->data;
		temp=temp->next;
	}
	printf("\nThe largest element in the list is : %d",max);
	
	return 0;
}

Output

 
Enter the element in the list : 1

If you wish to add more data on the list enter 1 : 1

Enter the element in the list : 2

If you wish to add more data on the list enter 1 : 1

Enter the element in the list : -3

If you wish to add more data on the list enter 1 : 1

Enter the element in the list : 56

If you wish to add more data on the list enter 1 : 0
The list is as follows :
1->2->-3->56->NULL
The largest element in the list is : 56

need an explanation for this answer? contact us directly to get an explanation for this answer

total answers (1)

Data Structure programs using C and C++ (Linked List Programs)

This question belongs to these collections

Similar questions


need a help?


find thousands of online teachers now
Interchange the two adjacent nodes in a given circ... >>
<< Convert a given singly linked list to a circular l...