#include <bits/stdc++.h>
using namespace std;
  
struct Node {
    int data;
    struct Node *next, *prev;
};
  
void insert(struct Node** head, int data)
{
    
    struct Node* temp = new Node();
  
    
    temp->data = data;
    temp->next = temp->prev = NULL;
  
    if ((*head) == NULL)
        (*head) = temp;
    else {
        temp->next = *head;
        (*head)->prev = temp;
        (*head) = temp;
    }
}
  
void PrintFourSum(struct Node* head, int x)
{
    
    struct Node* first = head;
  
    
    
    struct Node* second;
  
    
    
    struct Node* third;
  
    
    struct Node* fourth = head;
  
    
    
    while (fourth->next != NULL) {
        fourth = fourth->next;
    }
  
    
    
    struct Node* temp;
  
    while (first != NULL
           && fourth != NULL
           && first != fourth
           && fourth->next != first) {
  
        
        
        second = first->next;
  
        while (second != NULL
               && fourth != NULL
               && second != fourth
               && fourth->next != second) {
  
            int reqsum = x - (first->data
                              + second->data);
  
            
            
            third = second->next;
  
            
            temp = fourth;
  
            while (third != NULL && temp != NULL
                   && third != temp
                   && temp->next != third) {
  
                
                int twosum = third->data
                             + temp->data;
  
                
                
                if (twosum == reqsum) {
  
                    cout << "(" << first->data
                         << ", "
                         << second->data
                         << ", "
                         << third->data
                         << ", "
                         << temp->data
                         << ")\n";
  
                    third = third->next;
                    temp = temp->prev;
                }
  
                
                
                
                else if (twosum < reqsum) {
                    third = third->next;
                }
  
                
                
                
                else {
                    temp = temp->prev;
                }
            }
  
            
            
            second = second->next;
        }
  
        
        
        first = first->next;
    }
}
  
int main()
{
    struct Node* head = NULL;
    insert(&head, 2);
    insert(&head, 1);
    insert(&head, 0);
    insert(&head, 0);
    insert(&head, -1);
    insert(&head, -2);
    int X = 0;
    PrintFourSum(head, X);
  
    return 0;
}
Original page link
Best Cool Tech Gadgets
Top favorite technology gadgets
 
 
 
 
0 comments:
Post a Comment