版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
adatastructureDS=(D,R)D={a1,a2,...,an}R={<ai,aj>|ai,aj∈D}一组数据和数据之间的关系共同构成了一个数据结构线性表的数组实现云飞扬17181[0][1][2]浪淘沙18170万山红17165线性表的链式实现云飞扬17181
浪淘沙18170万山红17165ACGBDEFHJI12345678910
012345678910ABCEFDGHIJ完全二叉树的数组实现二叉树的链式实现AF∧∧E∧C∧D∧∧B∧rootABDCEF树的数组实现ABCDEFGpublic
classNode<T>{ Tdata;
intnext;}data-1000225parentABCDEFG0123456ABCDEFG树的链式实现a.结点同构b.结点异构树的链式实现节点有可变个引用:public
classNode<T>{ Tdata; T[]subTrees;
@SuppressWarnings("unchecked")
publicNode(int
count){//new的时候给定子树的个数
subTrees=(T[])newObject[count]; }}ABCDEFGBCEFGADrootABCDEFG树的链式实现ABCDEFGroot=0n=7data123firstchild456树的数组+链式实现ABCDEFG0123456孩子链表:找孩子方便,如何找双亲?总结数组实现:随机存取、受限的关系、连续的空间(?)链式实现:顺序存取、任意的关系、零散的空间描述关系并没有修改数据,而是创建了Node,借助于Node表达数据之间的关系关系:线性、层次、multilinkedstructure(网状?)总结d4d1d5d3d2d4d1d5d3d2classmateclassmateclassmateroommateroommateroommateroommateclassmate总结public
classMultiLinkStructure<T>implementsIterable<T>{
privateMap<T,Node<T>>data2node=newHashMap<>();//数据绑定到了哪个node
private
static
classNode<T>{ Tdata; List<Node<T>>to;//与哪些其它的数据有联系 Node(Tnode){
data=node;
to=newLinkedList<>(); } }
public
voidadd(Tdata){ Node<T>n=data2node.get(data);
if(n!=null)
throw
newIllegalArgumentException();
n=newNode<>(data);
data2node.put(data,n); }总结
public
voidremove(Tdata){ Node<T>n1=data2node.get(data);
if(n1==null)
throw
newIllegalArgumentException();
data2node.remove(data);
for(Node<T>n2:data2node.values())
n2.to.remove(n1); }
public
voidaddRelation(Td1,Td2){ Node<T>n1=data2node.get(d1); Node<T>n2=data2node.get(d2);
if(n1==null||n2==null)
throw
newIllegalArgumentException();
n1.to.add(n2); }
public
voidremoveRelation(Td1,Td2){ Node<T>n1=data2node.get(d1); Node<T>n2=data2node.get(d2);
if(n1==null||n2==null)
throw
newIllegalArgumentException();
n1.to.remove(n2); }总结
publicList<T>dataSet(Td){ Node<T>n1=data2node.get(d);
if(n1==null)
throw
newIllegalArgumentException(); ArrayList<T>list=newArrayList<>(n1.to.size());
for(Node<T>n2:n1.to)
list.add(n2.data);
return
list; }
publicIterator<T>iterator(){
return
data2node.keySet().iterator(); }总结
public
static
voidmain(String[]args){ MultiLinkStructure<Character>structure=newMultiLinkStructure<>(); Characterd1=Character.valueOf('a'); Characterd2=Character.valueOf('b'); Characterd3=Character.valueOf('c'); Characterd4=Character.valueOf('d'); Characterd5=Character.valueOf('e');
structure.add(d1);
structure.add(d2);
structure.add(d3);
structure.add(d4);
structure.add(d5); System.out.print("data:");
for(Characterc:structure) System.out.print(c+""); System.out.println();
structure.addRelation(d1,d2);
structure.addRelation(d1,d3);
structure.addRelation(d1,d5);
structure.addRelation(d5,d1);
structure.addRelation(d5,d2);
structure.addRelation(d5,d3);
structure.addRelation(d5,d4); List<Character>list=structure.dataSet(d5);
for(int
i=0;i<list.size();i++) System.out.print(list.get(i)+""); System.out.println();
structure.remove(d1);
list=structure.dataSet(d5);
for(int
i=0;i<list.size();i++) System.out.print(list.get(i)+""); System.out.println(); }总结public
classMultiLinkLabledStructure<T,E>implementsIterable<T>{
privateMap<T,Node<T,E>>data2node=newHashMap<>();
private
static
classNode<T,E>{ Tdata; Map<Node<T,E>,E>map;//联系和标签 Node(Tnode){
data=node;
map=newHashMap<>(); } }
public
voidadd(Tdata){ Node<T,E>n=data2node.get(data);
if(n!=null)
throw
newIllegalArgumentException();
n=newNode<>(data);
data2node.put(data,n); }总结
public
voidremove(Tdata){ Node<T,E>n1=data2node.get(data);
if(n1==null)
throw
newIllegalArgumentException();
data2node.remove(data);
for(Node<T,E>n2:data2node.values())
n2.map.remove(n1); }
public
voidaddRelation(Td1,Td2,Er){ Node<T,E>n1=data2node.get(d1); Node<T,E>n2=data2node.get(d2);
if(n1==null||n2==null)
throw
newIllegalArgumentException();
n1.map.put(n2,r); }
public
voidremoveRelation(Td1,Td2){ Node<T,E>n1=data2node.get(d1); Node<T,E>n2=data2node.get(d2);
if(n1==null||n2==null)
throw
newIllegalArgumentException();
n1.map.remove(n2); }总结
publicList<T>dataSet(Td){ Node<T,E>n1=data2node.get(d);
if(n1==null)
throw
newIllegalArgumentException(); Set<Node<T,E>>set=n1.map.keySet(); ArrayList<T>list=newArrayList<>(set.size());
for(Node<T,E>n2:set)
list.add(n2.data);
return
list; }
publicCollection<E>labelCollection(Td){ Node<T,E>n=data2node.get(d);
return
n.map.values(); }
publicIterator<T>iterator(){
return
data2node.keySet().iterator(); }总结
public
static
voidmain(String[]args){ MultiLinkLabledStructure<Character,String>structure=newMultiLinkLabledStructure<>(); Characterd1=Character.valueOf('a'); Characterd2=Character.valueOf('b'); Characterd3=Character.valueOf('c'); Characterd4=Character.valueOf('d'); Characterd5=Character.valueOf('e');
structure.add(d1);
structure.add(d2);
structure.add(d3);
structure.add(d4);
structure.add(d5); System.out.print("data:");
for(Characterc:structure) System.out.print(c+""); System.out.println();
structure.addRelation(d1,d2,"classmate");
structure.addRelation(d1,d4,"classmate");
structure.addRelat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024出口货物代理合同协议书
- 2024广西某小区环境景观工程合同
- 2024装修合同范本(家装、公装、标准版)
- 软件技术开发协议
- 消防安全操作员培训合同范本
- 涉外劳务合同的国际法律适用
- 2024监控施工合同模板
- 2024产权交易委托合同适用于转让方采取拍卖、招投标方式
- 深圳市注册会计师执业责任保险协议
- 2024对水果冷饮配送商监管协议
- 慢病管理及远程医疗的应用
- 学校个性化课程管理制度
- 肺炎支原体性肺炎护理课件
- 黑色素瘤护理的课件
- 水性可剥离涂料的制备
- 小程序会员协议书
- 贝克抑郁量表(BDI)
- 必修一第三章《细胞的基本结构》单元教学设计高一上学期生物人教版必修1
- 新青岛版三上科学19《海洋和陆地》教学设计
- 住宅项目工程总承包(EPC)技术标
- 情绪密码-心理课件
评论
0/150
提交评论