Java实现链表

前言 :Java中是没有指针的,但是有引用(和指针类似),所以可以创建出链表

体会:对于初学Java的我来说,这门语言要写很多类 ,我刚开始也不会写链表,查了很多资料他们一个类里面有好多方法(set ,get...)一个类那么长,对于只是想写一个简单链表的我加重了很大负担,所以接下来的文章我会很简单的写出来。

第一步 :创建一个节点

public class node {
	int data ;     //其实和C语言一样都是数据域和next域
	node next ; 
	
	public node() {       //无参构造方法
		
	}
	
	public node(int data) {    //有参构造方法
		this. Data = data ;
	}
} //节点类写完了

    上边一个是无参构造方法 ,一个是有参构造方法,主要就是为了初始化变量;
    而且构造方法主要是用在new()的时候(如果还不明白的话可以先看下面);

第二步 :将节点连接起来

补充(知道的话跳过就可以) :头插法 ;

下面代码中的 first 和 current 用来表示‘头节点’和‘当前所指节点’;

节点是一个一个连起来的,所以先有头节点然后才能连其他节点(处理方法不同);

import java.util.Scanner;

public class ListConnect {
	node first ;            
	node current ;
	
	public ListConnect() {
		                    //无参构造方法(个人建议一定要写上)
	}
	
	public void connect() {    //将节点连起来有两种方法 :头插法尾插法(这里用到的是头插法)
		int n = 0 ;
		Scanner sc = new Scanner(System.in);    //这三行就是为下边获取数据
		n = sc.nextInt();
		
		while(n != -1) {                 //从这行开始连接节点(输入-1时截至)
		node newnode = new node(n) ;    //new 的时候用到有参构造方法创建了一个值为n的节点
		
		if(first == null) {             //判断是否为头节点(头节点和其它节点的处理不相同)
			first = newnode ;
			current = newnode ;
		}
		else {                                         
			current. Next = newnode ;    //这里是点(相当于指针)
			current = newnode ;          //还看不懂的话可以把我的代码打一遍然后再去体会
		}
		n = sc.nextInt();
	}
		}
	public void display() {    //链表建完后遍历显示每个节点的值
		node flag ;
		flag = first;
		
		while(flag != null) {
		   System.out.print(flag. Data +" ");
		   flag = flag. Next ;
		}
	}
}

为什么要推荐写无参构造方法 :如果自己不定义有参构造方法系统会自动成无参构造方法,但是当自己定义有参构造方法后系统就不会生成无参构造方法,这时候new()就会报错。

第三步 :测试

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ListConnect list = new ListConnect() ;    //创建一个链表
		list. connect() ; 
		list. display();
	}
}

测试类就是创建一个对象然后进行功能测试

如果没有学会的话可以看下面的视频 :虽然用了变声器但是讲的课很好非常推荐学习

如果有什么没明白可以再评论区留言。

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值