내 "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은 "union"을 정의하는 키워드입니다.이 경우 대문자 만 사용하는 키워드와 다른 functinon을 정의 할 때 잘못된 가정으로 이어질 수 있습니다 – Alex