#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