- class Set:
- #初始化最大的集合大小
- maxsize = 100
- #初始化存储列表和当前存储的元素个数
- def __init__(self):
- self.size=0
- self.data=[None]*self.maxsize
-
- #返回当前的存储的元素个数
- def getsize(self):
- return self.size
-
- #返回第i个位置的元素
- def get(self,i):
- assert i>=0 and i
- return self.data[i]
-
- #判断e元素在不在当前集合汇总
- def IsIn(self,e):
- for i in range(self.size):
- if self.data[i]==e:
- return True
- return False
-
- #往集合中添加新的元素
- def add(self,e):
- if not self.IsIn(e):
- self.data[self.size]=e
- self.size+=1
-
- #从集合中删除e
- def delete(self,e):
- i=0
- while i
and self.data[i]!=e: - i+=1
- if i>=self.size:
- return
- for j in range(i+1,self.size):
- self.data[j-1]=self.data[j]
- self.size-=1
-
- #拷贝
- def copy(self):
- s1=Set()
- s1.data=self.data
- s1.size=self.size
- return s1
-
- #将集合中的元素全部打印出来
- def display(self):
- for i in range(self.size):
- print(self.data[i],end=' ')
- print()
-
- #求两个集合的并集
- def union(self,s2):
- s3=self.copy()
- for i in range(s2.getsize()):
- e=s2.get(i)
- if not self.IsIn(e):
- s3.add(e)
- return s3
-
- #求并集
- def inter(self,s2):
- s3=Set()
- for i in range(self.size):
- e=self.data[i]
- if s2.IsIn(e):
- s3.add(e)
- return s3
-
- #求差集
- def diff(self,s2):
- s3=Set()
- for i in range(self.size):
- e=self.data[i]
- if not s2.IsIn(e):
- s3.add(e)
- return s3
二、测试程序
-
- #测试程序
- s1=Set()
- s1.add(1)
- s1.add(4)
- s1.add(5)
- s1.add(3)
- s1.add(2)
- s1.add(4)
- print("集合s1:"),s1.display()
- print("s1的长度为:%d" %(s1.getsize()))
- s2=Set()
- s2.add(1)
- s2.add(2)
- s2.add(9)
- s2.add(4)
- s2.add(5)
- print("集合s2:"),s2.display()
-
- print("集合1和集合2的并集->s3")
- s3=s1.union(s2)
- print("集合3:"),s3.display()
- print("集合s1和集合s2的集合差s4")
- s4=s1.diff(s2)
- print("集合4:"),s4.display()
- print("集合s1和集合s2的交集->s5")
- s5=s1.inter(s2)
- print("集合s5:"),s5.display()
