classProvince1{private intpid;privateString pname;private Link2 cities = newLink2();publicLink2 getCities(){return this.cities;
}public Province1(intpid,String pname){this.pid=pid;this.pname=pname;
}publicString getInfo(){return "省份编号"+this.pid+"省份名称"+this.pname;
}public booleancompare(Province1 province){if (this ==province){return true;
}if (province == null){return false;
}if(this.pid == province.pid && this.pname.equals(province.pname)){return true;
}return false;
}
}classCity{private intcid;privateString cname;privateProvince1 province;public voidsetProvince(Province1 province){this.province =province;
}publicProvince1 getProvince(){return this.province;
}public City(intcid,String cname){this.cid=cid;this.cname=cname;
}publicString getInfo(){return "城市编号:"+this.cid+",城市名称:"+this.cname;
}public booleancompare(City city){if(this ==city){return true;
}if (city == null){return false;
}if (this.cid==city.cid && this.cname.equals(city.cname)){return true;
}return false;
}
}classLink2{classNode{privateCity data;privateNode next;publicNode (City city){this.data =city;
}public voidadd(Node newNode){if(this.next==null){this.next =newNode;
}else{this.next.add(newNode);
}
}public voidprint(){
System.out.println(this.data);if (this.next!=null){this.next.print();
}
}public booleanisContains(City data){if(data.compare(this.data)){return true;
}else{if(this.next!=null){return this.next.isContains(data);
}else{return false;
}
}
}public voiddeleteNode(City data){if(data.compare(this.data)){if(this.next!=null){
root= this.next;
}else{
root=null;
}
}else{if(this.next!=null){if(this.next.isContains(data)){this.next = this.next.next;
}
}else{return;
}
}
}public City getNode(intindex){if(Link2.this.foot++ ==index){return this.data;
}else{return this.next.getNode(index);
}
}public void modiNode(intindex,City data){if(index == Link2.this.foot++){this.data =data;
}else{this.next.modiNode(index,data);
}
}//第一次调用(Link),this=Link.root//第二次调用(Node),this=Link.root.next
public voidtoArrayNode(){
Link2.this.retArray[Link2.this.foot++] = this.data;if(this.next!=null){this.next.toArrayNode();
}
}
}//===========以上为内部类定义========// privateNode root;private int count = 0;private int foot = 0;private City [] retArray; //返回的数组
public voidaddNewNode(City data){
Node newNode= newNode(data);if(this.root==null){this.root =newNode;
}else{this.root.add(newNode);
}
count++;
}public voidprintNode(){if (this.root!=null){this.root.print();
}
}public intgetSize(){return this.count;
}public booleanisEmpty(){return this.count == 0;
}public booleanisContains(City data){if (data == null || this.root==null){return false;
}else{return this.root.isContains(data);
}
}public voiddeleteNode(City data){if(this.root.isContains(data)){
count--;this.root.deleteNode(data);
}else{return;
}
}public City getNode(intindex){
foot= 0;if(index>this.count){return null;
}else{return this.root.getNode(index);
}
}public void modiNode(intindex,City data){if (index>this.count){return;
}else{this.root.modiNode(index,data);
}
}publicCity [] toArray(){if(this.root == null){return null;
}this.foot = 0; //脚标控制
this.retArray = new City[this.count]; //根据保存内容开辟数组
this.root.toArrayNode();return this.retArray;
}
}public classLinkDemo4 {public static voidmain(String[] args) {//Link2 link1 = new Link2();//准备对象
Province1 province1 = new Province1(1,"jiangsu");
City city1= new City(1,"yangzhou");
City city2= new City(2,"yancheng");
City city3= new City(3,"huaian");//设置关系
city1.setProvince(province1);
city2.setProvince(province1);
city3.setProvince(province1);
province1.getCities().addNewNode(city1);
province1.getCities().addNewNode(city2);
province1.getCities().addNewNode(city3);//第二步:取出关系
System.out.println(province1.getInfo());
System.out.println("包含的城市数量:"+province1.getCities().getSize());
City [] city=province1.getCities().toArray();
System.out.println("删除前的城市信息:");for (int x = 0 ; x
System.out.println(city[x].getInfo());
}
System.out.println("是否包含yancheng:"+province1.getCities().isContains(new City(2,"yancheng")));
System.out.println("删除yancheng:");
province1.getCities().deleteNode(new City(2,"yancheng"));
City [] c=province1.getCities().toArray();for(City x:c){
System.out.println(x.getInfo());
}
}
}