私の "void union"関数では、 "AUB"がvoid関数内にないので、ユーザがそれぞれ入力したリンクリスト "A"と "B"の両方からデータを挿入する方法がわかりません。私は置いただろう:linked list union
AUB.insert
私は確信していた。助言がありますか?
#include "stdafx.h"
#include <iostream>
using namespace std;
class Sets
{
private:struct NODE
{
int info;
NODE *next;
};
NODE *list;
public:Sets()
{
list=NULL;
}
void Insert(int x)
{
NODE *p=list, *q=list, *r;
//create a new node
r = new (NODE);
r->info = x;
r->next = NULL;
//find the insertion place
while(p != NULL && p->info < x)
{
q=p;
p=p->next;
}
if(p==list)//x is the first info
{
list=r;
r->next=p;
}
else if(p==NULL)//x is the last info
{
q->next=r;
}
else //x is neither forst nor last info
{
r->next=p;
q->next=r;
}
}
void display()
{
NODE *p=list;
while(p != NULL)
{
cout << p->info << "-->";
p=p->next;
}
cout << "NULL\n";
}
void Union(Sets setA,Sets setB)
{
NODE *p=setA.list, *q=setB.list;
while(p != NULL && q != NULL)
{
if(p->info > q-> info)
{
(q->info)
q=q->next;
}
else if(p->info == q->info)
{
insert(p->info)
p=p->next;
q=q->next;
}
else//P->info < q->info
{
insert(p->info);
p=p->next;
}
}
while(p !=NULL)
{
insert(p->info);
p=p->next;
}
while(q != NULL)
{
insert(q->info);
q=q->next;
}
}
};
int main()
{
//create a set of integers
int x;
Sets A, B, setAUB;
cout << "Enter data for setA:\n";
cout << "Enter a group of positive integer numbers with -1 at the end end: ";
cin >> x;
while(x != -1)
{
A.Insert(x);
cin >> x;
};
//display setA
cout << endl << "setA=";
A.display();
cout << "Enter data for setB:\n";
cout << "Enter a group of positive integer numbers with -1 at the end end: ";
cin >> x;
while(x != -1)
{
B.Insert(x);
cin >> x;
};
//display setB
cout << endl << "setB=";
B.display();
setAUB.Union(A, B);
//display setAUB
cout << endl << "setAUB=";
setAUB.display();
system ("pause");
//terminate program
return 0;
};
'void Union()'は関数の悪い名前です。意味のあるものに変更する必要があります。 –
詳しいことはありますか?関数の目的はAとBの両方を組み合わせることです – BuzzSmarter
unionは "共用体"を定義するためのキーワードです。これは、大文字だけでキーワードと異なるfunctinonを定義すると誤った仮定につながる可能性があります – Alex