栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java链表数据结构

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java链表数据结构

        链表数据结构和数组的横向不同,他是向下延申的,因为他是递归函数的应用。通常在类中定义一个内部类,把内部类当作属性,外部类中存放根节点,运行的时候需要先判断根节点的状态,然后再看是否需要调用根节点下一个节点也就是too.nxet其中too表示当前对象。this.nxet就是当前对象的下一级。

public class DiGui{
	public static void main(String []args) {
		Nodn k = new Nodn();
		k.add(1);
		k.add(3);
		k.add(4);//添加数据
		
		k.del(3);//删除数据
		
		
		
		k.upN(4, 5);//替换数据
		
		System.out.println(k.find(4));//查找数据
		
		k.ins(1, 9);//插入数据
		
		k.print1();//打印数据
	}
}

class Nodn{
	private int cin=0;
	private Nodn1 too;
	
	//添加节点
	public void add(int a) {
		if(too==null) {//优先判断跟节点
			too = new Nodn1(a);
		}else {
			too.addNodn1(a);
		}
	}
	
	//输出节点
	public void print1() {
		if(too!=null) {
			System.out.println(too.a);
			too.printNodn1();
		}
	}
	
	//删除节点
	public void del(int a) {
		if(too==null)return;
		if(too.getA()==a) {
			too = too.nxte;
		}else {
			too.delNodn1(a);
		}
	}
	
	//查找节点
	public boolean find(int a) {
		if(too==null) return false;
			
		
		if(too.getA()==a) {
			return true;
			
		}else {
			return too.findNodn1(a);
		}
			
	}
	
	//修改节点
	public boolean upN(int oldA,int newA) {
		if(too==null) return false;
		if(too.getA()==oldA) {
			too.setA(newA);
			return true;
		}else {
			return too.upNodn1(oldA, newA);
		}
	}
	
	//往前插入节点
	public void ins(int index,int a) {
		if(index<0)return;
		cin=0;
		if(index == cin) {
			Nodn1 k = new Nodn1(a);
			k.nxte=too;
			too=k;
		}else {
			too.insert(index, a);
		}
	}
	
	private class Nodn1{
		private int a;
		private Nodn1 nxte;//把自己当作自己的属性
		
		public Nodn1(int a) {
			this.a=a;
		}
		
		public void setA(int a) {
			this.a=a;
		}
		
		public int getA() {
			return a;
		}
		
		//添加节点
		public void addNodn1(int a) {
			if(this.nxte==null) {
				this.nxte=new Nodn1(a);
			}else {
				this.nxte.addNodn1(a);
			}
			
		}
		
		//删除节点
		public void delNodn1(int a) {
			if(this.nxte!=null) {
				if(this.nxte.a==a) {
					this.nxte = this.nxte.nxte;//this表示too。too.nxte的下一个nxte把当前的nxte覆盖掉(替换位置)
				}else {
					this.nxte.delNodn1(a);
				}
			}
			
		}
		
		//输出所有节点
		public void printNodn1() {
			if(this.nxte!=null) {
				System.out.println(this.nxte.a);
				this.nxte.printNodn1();
			}
		}
		
		//查找节点
		public boolean findNodn1(int a) {
			if(this.nxte!=null) {
				if(this.nxte.a==a) {
					return true;
				}else {
					this.nxte.findNodn1(a);
				}
			}
			return false;
		}
		
		//修改节点
		public boolean upNodn1(int oldA,int newA) {
			if(this.nxte!=null) {
				if(this.nxte.getA()==oldA) {
					this.nxte.setA(newA);
					return true;
				}else {
					return this.nxte.upNodn1(oldA, newA);
				}
			}
			return false;
		}
		
		//往后插入节点
		public void insert(int index,int a) {
			cin++;
			if(index==cin) {
				Nodn1 k = new Nodn1(a);
				k.nxte=this.nxte;
				this.nxte=k;
			}else {
				this.nxte.insert(index, a);
			}
		}
		
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/927106.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号