c++ Set - Data Structure using Linked List Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!How do you set, clear, and toggle a single bit?What are the differences between a pointer variable and a reference variable in C++?How can I profile C++ code running on Linux?The Definitive C++ Book Guide and ListWhat is the effect of extern “C” in C++?What is the “-->” operator in C++?Get difference between two listsEasiest way to convert int to string in C++C++11 introduced a standardized memory model. What does it mean? And how is it going to affect C++ programming?Why is reading lines from stdin much slower in C++ than Python?
tikz: drawing arrow
Like totally amazing interchangeable sister outfit accessory swapping or whatever
Protagonist's race is hidden - should I reveal it?
Why did Israel vote against lifting the American embargo on Cuba?
Converting a text document with special format to pandas data frame
Why isn't everyone flabbergasted about Bran's "gift"?
How to show a density matrix is in a pure/mixed state?
What could prevent concentrated local exploration?
2 sample t test for sample sizes - 30,000 and 150,000
What is the ongoing value of the Kanban board to the developers as opposed to management
Is there a way to convert Wolfram Language expression to string?
How to get a single big right brace?
Who can become a wight?
What kind of capacitor is this in the image?
Why do C and C++ allow the expression (int) + 4*5?
Short story about an alien named Ushtu(?) coming from a future Earth, when ours was destroyed by a nuclear explosion
false 'Security alert' from Google - every login generates mails from 'no-reply@accounts.google.com'
What is the evidence that custom checks in Northern Ireland are going to result in violence?
Can gravitational waves pass through a black hole?
Putting Ant-Man on house arrest
Why these surprising proportionalities of integrals involving odd zeta values?
Can I take recommendation from someone I met at a conference?
Determine the generator of an ideal of ring of integers
Can 'non' with gerundive mean both lack of obligation and negative obligation?
c++ Set - Data Structure using Linked List
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)
Data science time! April 2019 and salary with experience
The Ask Question Wizard is Live!How do you set, clear, and toggle a single bit?What are the differences between a pointer variable and a reference variable in C++?How can I profile C++ code running on Linux?The Definitive C++ Book Guide and ListWhat is the effect of extern “C” in C++?What is the “-->” operator in C++?Get difference between two listsEasiest way to convert int to string in C++C++11 introduced a standardized memory model. What does it mean? And how is it going to affect C++ programming?Why is reading lines from stdin much slower in C++ than Python?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
Tm trying to get the difference of 2 sets in linked list
Example:
Input:
Set A: 1 - 2 - 3 - 5
Set B: 2 - 4 - 5
Output:
Union: 5 - 4 - 2 - 5 - 3 - 2 - 1
Intersection: 5 - 2
Difference: 3 - 4 - 1 (Problem here) Mine outputs Difference: 5 - 3 - 2 - 1
This code is under "LinkedList.h"
#include "Node.h"
#include <iostream>
using namespace std;
class LinkedList
public:
Node *head;
LinkedList()
head = NULL;
bool find(Node *value)
int cnt(0);
Node *iterator = head;
while(iterator != NULL)
if(value->data == iterator->data) return 1;
iterator = iterator->next;
return cnt;
void insertBeginning(int value)
Node *newNode = new Node;
newNode->data = value;
if(find(newNode) != 1)
Node *temp = head;
head = newNode;
newNode->next = temp;
void deleteBeginning()
if(head != NULL)
Node *temp = head->next;
head = temp;
void display()
Node *iterator = head;
while (iterator != NULL)
cout<<iterator->data<<" ->";
iterator = iterator->next;
cout<<" end";
bool isEmpty()
int c;
head == NULL ? c = 1: c = 0;
return c;
;
class Set:public LinkedList
public:
void Union(Set& myListA,Set& myListB)
for(Node* iterator1 = myListA.head; iterator1 != NULL; iterator1 = iterator1->next)
LinkedList::insertBeginning(iterator1->data);
for(Node* iterator2 = myListB.head; iterator2 != NULL; iterator2 = iterator2->next)
LinkedList::insertBeginning(iterator2->data);
void Intersection(Set& myListA, Set& myListB)
for(Node* iterator3 = myListA.head; iterator3 != NULL; iterator3 = iterator3->next)
//if(LinkedList::find(iterator3) != 1)
for(Node* iterator4 = myListB.head; iterator4 != NULL; iterator4 = iterator4->next)
//if(LinkedList::find(iterator4) != 1)
if( iterator3->data == iterator4->data )
LinkedList::insertBeginning(iterator4->data);
void Difference(Set& myListA, Set& myListB)
for(Node* iterator5 = myListA.head; iterator5 != NULL; iterator5 = iterator5->next)
for(Node* iterator6 = myListB.head; iterator6 != NULL; iterator6 = iterator6->next)
if (iterator6->data != iterator5->data && LinkedList::find(iterator5) != 1 && LinkedList::find(iterator6) != 1)
LinkedList::insertBeginning(iterator5->data);
else
continue;
;
and this is under "Node.h"
class Node
public:
int data;
Node *next;
;
c++ set set-difference
add a comment |
Tm trying to get the difference of 2 sets in linked list
Example:
Input:
Set A: 1 - 2 - 3 - 5
Set B: 2 - 4 - 5
Output:
Union: 5 - 4 - 2 - 5 - 3 - 2 - 1
Intersection: 5 - 2
Difference: 3 - 4 - 1 (Problem here) Mine outputs Difference: 5 - 3 - 2 - 1
This code is under "LinkedList.h"
#include "Node.h"
#include <iostream>
using namespace std;
class LinkedList
public:
Node *head;
LinkedList()
head = NULL;
bool find(Node *value)
int cnt(0);
Node *iterator = head;
while(iterator != NULL)
if(value->data == iterator->data) return 1;
iterator = iterator->next;
return cnt;
void insertBeginning(int value)
Node *newNode = new Node;
newNode->data = value;
if(find(newNode) != 1)
Node *temp = head;
head = newNode;
newNode->next = temp;
void deleteBeginning()
if(head != NULL)
Node *temp = head->next;
head = temp;
void display()
Node *iterator = head;
while (iterator != NULL)
cout<<iterator->data<<" ->";
iterator = iterator->next;
cout<<" end";
bool isEmpty()
int c;
head == NULL ? c = 1: c = 0;
return c;
;
class Set:public LinkedList
public:
void Union(Set& myListA,Set& myListB)
for(Node* iterator1 = myListA.head; iterator1 != NULL; iterator1 = iterator1->next)
LinkedList::insertBeginning(iterator1->data);
for(Node* iterator2 = myListB.head; iterator2 != NULL; iterator2 = iterator2->next)
LinkedList::insertBeginning(iterator2->data);
void Intersection(Set& myListA, Set& myListB)
for(Node* iterator3 = myListA.head; iterator3 != NULL; iterator3 = iterator3->next)
//if(LinkedList::find(iterator3) != 1)
for(Node* iterator4 = myListB.head; iterator4 != NULL; iterator4 = iterator4->next)
//if(LinkedList::find(iterator4) != 1)
if( iterator3->data == iterator4->data )
LinkedList::insertBeginning(iterator4->data);
void Difference(Set& myListA, Set& myListB)
for(Node* iterator5 = myListA.head; iterator5 != NULL; iterator5 = iterator5->next)
for(Node* iterator6 = myListB.head; iterator6 != NULL; iterator6 = iterator6->next)
if (iterator6->data != iterator5->data && LinkedList::find(iterator5) != 1 && LinkedList::find(iterator6) != 1)
LinkedList::insertBeginning(iterator5->data);
else
continue;
;
and this is under "Node.h"
class Node
public:
int data;
Node *next;
;
c++ set set-difference
1
On standard definitions, your 'union' output is wrong too--there should be no repeated elements.
– Matt Phillips
Mar 18 '12 at 14:04
add a comment |
Tm trying to get the difference of 2 sets in linked list
Example:
Input:
Set A: 1 - 2 - 3 - 5
Set B: 2 - 4 - 5
Output:
Union: 5 - 4 - 2 - 5 - 3 - 2 - 1
Intersection: 5 - 2
Difference: 3 - 4 - 1 (Problem here) Mine outputs Difference: 5 - 3 - 2 - 1
This code is under "LinkedList.h"
#include "Node.h"
#include <iostream>
using namespace std;
class LinkedList
public:
Node *head;
LinkedList()
head = NULL;
bool find(Node *value)
int cnt(0);
Node *iterator = head;
while(iterator != NULL)
if(value->data == iterator->data) return 1;
iterator = iterator->next;
return cnt;
void insertBeginning(int value)
Node *newNode = new Node;
newNode->data = value;
if(find(newNode) != 1)
Node *temp = head;
head = newNode;
newNode->next = temp;
void deleteBeginning()
if(head != NULL)
Node *temp = head->next;
head = temp;
void display()
Node *iterator = head;
while (iterator != NULL)
cout<<iterator->data<<" ->";
iterator = iterator->next;
cout<<" end";
bool isEmpty()
int c;
head == NULL ? c = 1: c = 0;
return c;
;
class Set:public LinkedList
public:
void Union(Set& myListA,Set& myListB)
for(Node* iterator1 = myListA.head; iterator1 != NULL; iterator1 = iterator1->next)
LinkedList::insertBeginning(iterator1->data);
for(Node* iterator2 = myListB.head; iterator2 != NULL; iterator2 = iterator2->next)
LinkedList::insertBeginning(iterator2->data);
void Intersection(Set& myListA, Set& myListB)
for(Node* iterator3 = myListA.head; iterator3 != NULL; iterator3 = iterator3->next)
//if(LinkedList::find(iterator3) != 1)
for(Node* iterator4 = myListB.head; iterator4 != NULL; iterator4 = iterator4->next)
//if(LinkedList::find(iterator4) != 1)
if( iterator3->data == iterator4->data )
LinkedList::insertBeginning(iterator4->data);
void Difference(Set& myListA, Set& myListB)
for(Node* iterator5 = myListA.head; iterator5 != NULL; iterator5 = iterator5->next)
for(Node* iterator6 = myListB.head; iterator6 != NULL; iterator6 = iterator6->next)
if (iterator6->data != iterator5->data && LinkedList::find(iterator5) != 1 && LinkedList::find(iterator6) != 1)
LinkedList::insertBeginning(iterator5->data);
else
continue;
;
and this is under "Node.h"
class Node
public:
int data;
Node *next;
;
c++ set set-difference
Tm trying to get the difference of 2 sets in linked list
Example:
Input:
Set A: 1 - 2 - 3 - 5
Set B: 2 - 4 - 5
Output:
Union: 5 - 4 - 2 - 5 - 3 - 2 - 1
Intersection: 5 - 2
Difference: 3 - 4 - 1 (Problem here) Mine outputs Difference: 5 - 3 - 2 - 1
This code is under "LinkedList.h"
#include "Node.h"
#include <iostream>
using namespace std;
class LinkedList
public:
Node *head;
LinkedList()
head = NULL;
bool find(Node *value)
int cnt(0);
Node *iterator = head;
while(iterator != NULL)
if(value->data == iterator->data) return 1;
iterator = iterator->next;
return cnt;
void insertBeginning(int value)
Node *newNode = new Node;
newNode->data = value;
if(find(newNode) != 1)
Node *temp = head;
head = newNode;
newNode->next = temp;
void deleteBeginning()
if(head != NULL)
Node *temp = head->next;
head = temp;
void display()
Node *iterator = head;
while (iterator != NULL)
cout<<iterator->data<<" ->";
iterator = iterator->next;
cout<<" end";
bool isEmpty()
int c;
head == NULL ? c = 1: c = 0;
return c;
;
class Set:public LinkedList
public:
void Union(Set& myListA,Set& myListB)
for(Node* iterator1 = myListA.head; iterator1 != NULL; iterator1 = iterator1->next)
LinkedList::insertBeginning(iterator1->data);
for(Node* iterator2 = myListB.head; iterator2 != NULL; iterator2 = iterator2->next)
LinkedList::insertBeginning(iterator2->data);
void Intersection(Set& myListA, Set& myListB)
for(Node* iterator3 = myListA.head; iterator3 != NULL; iterator3 = iterator3->next)
//if(LinkedList::find(iterator3) != 1)
for(Node* iterator4 = myListB.head; iterator4 != NULL; iterator4 = iterator4->next)
//if(LinkedList::find(iterator4) != 1)
if( iterator3->data == iterator4->data )
LinkedList::insertBeginning(iterator4->data);
void Difference(Set& myListA, Set& myListB)
for(Node* iterator5 = myListA.head; iterator5 != NULL; iterator5 = iterator5->next)
for(Node* iterator6 = myListB.head; iterator6 != NULL; iterator6 = iterator6->next)
if (iterator6->data != iterator5->data && LinkedList::find(iterator5) != 1 && LinkedList::find(iterator6) != 1)
LinkedList::insertBeginning(iterator5->data);
else
continue;
;
and this is under "Node.h"
class Node
public:
int data;
Node *next;
;
c++ set set-difference
c++ set set-difference
asked Mar 18 '12 at 14:03
Joshua BelarminoJoshua Belarmino
181522
181522
1
On standard definitions, your 'union' output is wrong too--there should be no repeated elements.
– Matt Phillips
Mar 18 '12 at 14:04
add a comment |
1
On standard definitions, your 'union' output is wrong too--there should be no repeated elements.
– Matt Phillips
Mar 18 '12 at 14:04
1
1
On standard definitions, your 'union' output is wrong too--there should be no repeated elements.
– Matt Phillips
Mar 18 '12 at 14:04
On standard definitions, your 'union' output is wrong too--there should be no repeated elements.
– Matt Phillips
Mar 18 '12 at 14:04
add a comment |
2 Answers
2
active
oldest
votes
Your implementation of Difference is far too complicated: since your lists are sorted, all you need to do is to find mismatching elements. This requires one loop where in each iteration you move
- both iterators if the element is in both sets, i.e. it isn't part of the difference
- the iterator for the first list in which case you have an element which is in the first set but not in the second set
- the iterator for the second list in which case you have an element which is in the second set but not in the first set
Your implementation of Intersection is likewise too complicated and also needs just one loop: it would just store the common value in the cases where no element is stored for Difference(). Finally, Union() is, again, too complicated: it would store an element in every iteration, either the common one or the one skipped depending on which branch is taken. This would also yield a correct result.
Obviously, what you really want to use is
std::set_intersection(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_intersection));
std::set_union(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_union));
std::set_symmetric_difference(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_difference));
assuming you have given your lists and iterators a standard interface.
add a comment |
Here's your answer, 7 years later
void Difference(Set& ListA, Set& ListB)
for (member* i5 = ListA.head; i5 != NULL; i5 = i5->next)
for (member* i6 = ListB.head; i6 != NULL; i6 = i6->next)
if (i6->data != i5->data && ListA.find(i6) != 1 && ListB.find(i5) != 1)
List::insert(i5->data);
List::insert(i6->data);
else
continue;
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f9758922%2fc-set-data-structure-using-linked-list%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Your implementation of Difference is far too complicated: since your lists are sorted, all you need to do is to find mismatching elements. This requires one loop where in each iteration you move
- both iterators if the element is in both sets, i.e. it isn't part of the difference
- the iterator for the first list in which case you have an element which is in the first set but not in the second set
- the iterator for the second list in which case you have an element which is in the second set but not in the first set
Your implementation of Intersection is likewise too complicated and also needs just one loop: it would just store the common value in the cases where no element is stored for Difference(). Finally, Union() is, again, too complicated: it would store an element in every iteration, either the common one or the one skipped depending on which branch is taken. This would also yield a correct result.
Obviously, what you really want to use is
std::set_intersection(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_intersection));
std::set_union(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_union));
std::set_symmetric_difference(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_difference));
assuming you have given your lists and iterators a standard interface.
add a comment |
Your implementation of Difference is far too complicated: since your lists are sorted, all you need to do is to find mismatching elements. This requires one loop where in each iteration you move
- both iterators if the element is in both sets, i.e. it isn't part of the difference
- the iterator for the first list in which case you have an element which is in the first set but not in the second set
- the iterator for the second list in which case you have an element which is in the second set but not in the first set
Your implementation of Intersection is likewise too complicated and also needs just one loop: it would just store the common value in the cases where no element is stored for Difference(). Finally, Union() is, again, too complicated: it would store an element in every iteration, either the common one or the one skipped depending on which branch is taken. This would also yield a correct result.
Obviously, what you really want to use is
std::set_intersection(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_intersection));
std::set_union(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_union));
std::set_symmetric_difference(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_difference));
assuming you have given your lists and iterators a standard interface.
add a comment |
Your implementation of Difference is far too complicated: since your lists are sorted, all you need to do is to find mismatching elements. This requires one loop where in each iteration you move
- both iterators if the element is in both sets, i.e. it isn't part of the difference
- the iterator for the first list in which case you have an element which is in the first set but not in the second set
- the iterator for the second list in which case you have an element which is in the second set but not in the first set
Your implementation of Intersection is likewise too complicated and also needs just one loop: it would just store the common value in the cases where no element is stored for Difference(). Finally, Union() is, again, too complicated: it would store an element in every iteration, either the common one or the one skipped depending on which branch is taken. This would also yield a correct result.
Obviously, what you really want to use is
std::set_intersection(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_intersection));
std::set_union(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_union));
std::set_symmetric_difference(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_difference));
assuming you have given your lists and iterators a standard interface.
Your implementation of Difference is far too complicated: since your lists are sorted, all you need to do is to find mismatching elements. This requires one loop where in each iteration you move
- both iterators if the element is in both sets, i.e. it isn't part of the difference
- the iterator for the first list in which case you have an element which is in the first set but not in the second set
- the iterator for the second list in which case you have an element which is in the second set but not in the first set
Your implementation of Intersection is likewise too complicated and also needs just one loop: it would just store the common value in the cases where no element is stored for Difference(). Finally, Union() is, again, too complicated: it would store an element in every iteration, either the common one or the one skipped depending on which branch is taken. This would also yield a correct result.
Obviously, what you really want to use is
std::set_intersection(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_intersection));
std::set_union(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_union));
std::set_symmetric_difference(s0.begin(), s0.end(), s1.begin(), s1.end(),
std::back_inserter(result_difference));
assuming you have given your lists and iterators a standard interface.
answered Mar 18 '12 at 14:30
Dietmar KühlDietmar Kühl
127k9157321
127k9157321
add a comment |
add a comment |
Here's your answer, 7 years later
void Difference(Set& ListA, Set& ListB)
for (member* i5 = ListA.head; i5 != NULL; i5 = i5->next)
for (member* i6 = ListB.head; i6 != NULL; i6 = i6->next)
if (i6->data != i5->data && ListA.find(i6) != 1 && ListB.find(i5) != 1)
List::insert(i5->data);
List::insert(i6->data);
else
continue;
add a comment |
Here's your answer, 7 years later
void Difference(Set& ListA, Set& ListB)
for (member* i5 = ListA.head; i5 != NULL; i5 = i5->next)
for (member* i6 = ListB.head; i6 != NULL; i6 = i6->next)
if (i6->data != i5->data && ListA.find(i6) != 1 && ListB.find(i5) != 1)
List::insert(i5->data);
List::insert(i6->data);
else
continue;
add a comment |
Here's your answer, 7 years later
void Difference(Set& ListA, Set& ListB)
for (member* i5 = ListA.head; i5 != NULL; i5 = i5->next)
for (member* i6 = ListB.head; i6 != NULL; i6 = i6->next)
if (i6->data != i5->data && ListA.find(i6) != 1 && ListB.find(i5) != 1)
List::insert(i5->data);
List::insert(i6->data);
else
continue;
Here's your answer, 7 years later
void Difference(Set& ListA, Set& ListB)
for (member* i5 = ListA.head; i5 != NULL; i5 = i5->next)
for (member* i6 = ListB.head; i6 != NULL; i6 = i6->next)
if (i6->data != i5->data && ListA.find(i6) != 1 && ListB.find(i5) != 1)
List::insert(i5->data);
List::insert(i6->data);
else
continue;
answered Mar 22 at 14:01
Mostafa KasabiMostafa Kasabi
287
287
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f9758922%2fc-set-data-structure-using-linked-list%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
On standard definitions, your 'union' output is wrong too--there should be no repeated elements.
– Matt Phillips
Mar 18 '12 at 14:04