Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

Code:

#include<stdio.h>

#include<stdlib.h>

#include<iostream>

using namespace std;

struct Node //Doubly Linked List Node

struct Node *prev;

struct Node *next;

int data;

};

void bubbleSort(struct Node *start)

int swapped, i;

struct Node *ptr1;

struct Node *lptr = NULL;

/* Checking for empty list */

if (start == NULL)

return;

do

swapped = 0;

ptr1 = start;
while (ptr1->next != lptr)

if (ptr1->data > ptr1->next->data)

swap(ptr1->data, ptr1->next->data);

swapped = 1;

ptr1 = ptr1->next;

lptr = ptr1;

while (swapped);

while (start != NULL)

cout << start->data << " ";

start = start->next;

void push(Node **head, int data) //Pushing data into doubly linked list

Node *newnode = new Node;

newnode->data = data;

newnode->next = *head;

newnode->prev = NULL;
if (*head != NULL)

(*head)->prev = newnode;

*head = newnode;

void finalMaxSumList(Node *a, Node *b)

Node *result = NULL;

Node *pre1 = a, *curr1 = a;

Node *pre2 = b, *curr2 = b;

while (curr1 != NULL || curr2 != NULL)

int sum1 = 0, sum2 = 0;

while (curr1!=NULL && curr2!=NULL && curr1->data!=curr2->data)

if (curr1->data < curr2->data)

sum1 += curr1->data;

curr1 = curr1->next;

}
else

sum2 += curr2->data;

curr2 = curr2->next;

if (curr1 == NULL)

while (curr2 != NULL)

sum2 += curr2->data;

curr2 = curr2->next;

if (curr2 == NULL)

while (curr1 != NULL)

sum1 += curr1->data;

curr1 = curr1->next;

if (pre1 == a && pre2 == b)

result = (sum1 > sum2)? pre1 : pre2;


else

if (sum1 > sum2)

pre2->next = pre1->next;

else

pre1->next = pre2->next;

pre1 = curr1, pre2 = curr2;

if (curr1)

curr1 = curr1->next;

if (curr2)

curr2 = curr2->next;

bubbleSort(result);

int main()

{
Node *head1 = NULL, *head2 = NULL;

push(&head1, 1);

push(&head1, 3);

push(&head1, 30);

push(&head1, 90);

push(&head1, 120);

push(&head1, 240);

push(&head1, 511);

push(&head2, 0);

push(&head2, 3);

push(&head2, 12);

push(&head2, 32);

push(&head2, 90);

push(&head2, 125);

push(&head2, 240);

finalMaxSumList(head1, head2);

return 0;

Output:

You might also like