-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathMyset.java
More file actions
130 lines (91 loc) · 2.23 KB
/
Myset.java
File metadata and controls
130 lines (91 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
interface MysetInterface{
public Boolean IsEmpty();
public Boolean IsMember(Object o);
public void Insert(Object o);
public void Delete(Object o) throws Exception;
public Myset Union(Myset a);
public Myset Intersection(Myset a);
}
public class Myset implements MysetInterface{
/*
Implementation of Set data structure using linked list data structure.
*/
MyLinkedList myset;
public Myset(){
myset = new MyLinkedList ();
}
public Boolean IsEmpty(){
// Returns true if the set is empty
return myset.isEmpty();
}
public Boolean IsMember(Object o){
// Returns true if o is in the set, false otherwise.
MyLinkedList.Node itr= myset.head;
while(itr!=null){
//System.out.println(itr.getData());
if(itr.getData().equals(o)){
return true;
}
itr = itr.getNext();
}
return false;
}
public void Insert(Object o){
// Inserts o into the set
if(!IsMember(o)){
myset.add(o);
}
}
public void Delete(Object o) throws NotInSetException{
// Deletes o from the set, throws exception if o is not in the set.
if(IsMember(o)){
if(myset.head!=null && myset.head.getData() == o){
myset.remove();
}
else{
MyLinkedList.Node prev = myset.head;
MyLinkedList.Node itr = myset.head.getNext();
while(itr!=null){
if(itr.getData().equals(o)){
prev.next = itr.next;
}
prev = itr;
itr = itr.getNext();
}
}
}
else{
throw new NotInSetException(o+" is not in the set.");
}
}
public Myset Union(Myset a){
// Returns a set which is the union of the current set with the set a.
Myset answer = new Myset();
MyLinkedList.Node itr = myset.head;
while(itr!=null){
answer.Insert(itr.getData());
itr= itr.getNext();
}
itr = a.myset.head;
while(itr!=null){
answer.Insert(itr.getData());
itr = itr.getNext();
}
return answer;
}
public Myset Intersection(Myset a){
//Returns a set which is the intersection of the current set with the set a.
Myset answer = new Myset();
MyLinkedList.Node itr = myset.head;
while( itr != null){
if(a.IsMember(itr.getData())){
answer.Insert(itr.getData());
}
itr = itr.getNext();
}
return answer;
}
public String toString(){
return myset.toString();
}
}