문제 :
정수의 집합의 기본 동작을 달성하기 위해 프로그램을 작성
요구는 :
정수의 집합 {2,4,1,3,5} 및 {2,5,10}과 이전의 출력 소자의 수를 입력하고, 이들은 교차점 차분 계산 설정된
사적 데이터 구성원 LEN (길이 집합)과의 배열 (저장 요소들의 집합)과 같은 방법을 포함하여, 디자인 클래스 IntSet :
공공 무효 인서트 (INT는 d) 상기 요소를 복제 컬렉션에 추가 된 요소를 추가 할 수없는
공공 INT 길이는 () à는 집합의 원소의 개수를 반환
공개 INT 길이 ()의 세트의 위치 I에 대한 요소를 돌려
공공 무효 DISP ()의 출력 세트 (A)의 모든 요소의
두 세트의 공공 IntSet 조합 (IntSet의 S2) à 구현 및 운영
포스트 달성 동작 두 세트 공개 IntSet 교차점 (IntSet S2)
공개 IntSet 차 (IntSet S2)는 두 세트의 차분 연산을 구현
공공 IntSet copySet (IntSet S2) à 사본의 두 세트를 구현
자바 코드 :
공용 클래스 IntSet {
개인 INT 렌; // 설정 길이
개인 INT []의 // 어레이
공공 IntSet () {
= 0 등;
S = 새로운 INT [100];
}
공공 무효 인서트 인서트 요소 (INT d) // 집합
{
대해 INT (I = 0; I <렌; 내가 ++) {
경우 (S [I] == d) {
반환;
}
}
S [S]는 D가 =;
++와 같은;
}
공공 INT 길이는 () 세트의 길이를 가져옵니다 //
{
렌을 반환;
}
공공의 getInt INT (INT I) {
경우 (ⅰ> = 0 && 난 LEN을 <)
{
창 S [I];
} 다른 {
-1을 리턴;
}
}
공공 무효 DISP () {
대해 INT (I = 0; I <렌; 내가 ++)
{
System.out.print ( "\의 t '+ S [I]);
}
}
공공 IntSet 조합 (IntSet S2) // 并
{
동일한 INT;
경우 (; 나는 this.len <; I = 0 int로 난 ++)
{
동일한 = 0;
대 (INT의 J = 0; J <s2.len, J ++)
{
경우 (this.getInt (I) == s2.getInt (j))
{
동일한 = 1;
단절;
}
경우 (동일한 == 0)
{
this.insert (s2.getInt (j));
}
}
}
이를 반환;
}
공공 IntSet 교차로 (IntSet의 S2) {// 交
동일한 INT;
경우 (; 나는 <this.len을, I = 0 int로 난 ++) {
동일한 = 0;
대 (INT의 J = 0; J <s2.len, J ++) {
경우 (this.s [I] == s2.getInt (j))
{
동일한 = 1, 반복 요소를 찾는 // 동일한 = 1
단절;
}
}
(같은 == 0) {// 중복 요소를 찾을 수없는, 삭제하는 경우
대 (INT에 K = 1; K <this.len; ++ K)
{
this.s [K] = this.s [K + 1];
}
나는--;
this.len--;
}
}
이를 반환;
}
공공 IntSet 차이 (IntSet S2) {// 差
동일한 INT;
경우 (; 나는 <this.len을, I = 0 int로 난 ++) {
동일한 = 0;
대 (INT의 J = 0; J <s2.len, J ++) {
경우 (this.s [I] == s2.getInt (j))
{
동일한 = 1, 반복 요소를 찾는 // 동일한 = 1
단절;
}
}
(같은 == 1) {// 중복 요소를 발견하면, 삭제
대 (INT에 K = 1; K <this.len; ++ K)
{
this.s [K] = this.s [K + 1];
}
나는--;
this.len--;
}
}
이를 반환;
}
공공 IntSet copySet (IntSet의 S2) {
this.len = s2.len;
대해 INT (I = 0; I는 <s2.len; 내가 ++) {
this.s [I] = s2.getInt (I);
}
이를 반환;
}
}
테스트 코드 :
공용 클래스 테스트 {
공공 정적 무효 메인 (문자열 []에 args) {
IntSet S1, S2;
S1 = 새로운 IntSet ();
S2 = 새로운 IntSet ();
s1.insert (2);
s1.insert (4);
s1.insert (1);
s1.insert (3);
s1.insert (5);
s1.disp ();
s2.insert (2);
s2.insert (5);
s2.insert (10);
에서 System.out.println ();
s2.disp ();
// s1.union (S2);
//에서 System.out.println ();
// s1.disp ();
// s1.intersection (S2);
//에서 System.out.println ();
// s1.disp ();
// s1.difference (S2);
//에서 System.out.println ();
// s1.disp ();
// IntSet S6 = 새로운 IntSet ();
// s6.copySet (S2);
// s6.disp ();
s2.difference (S1);
에서 System.out.println ();
s2.disp ();
}
}