链表及用java创建链表

数组是连续的,而链表不是,链表是由值和地址指针组成的,如下图:

 在电脑上内存一般是用数组存储的,数组索引较快。而磁盘是用链表存储的,那为什么数组索引快还在磁盘上用链式存储这种查找速度慢的,这是因为文件都存在磁盘上,如果删除文件后就会造成磁盘扇区碎片化,用链表存储可以合理运用碎片化的空间。磁盘存储如下图:

 这样大大提高了磁盘的利用率。

java文件编译成class文件是放入电脑内存中的,因为内存是用数组存储的,所以如果想用java实现链表存储我们需要写几个方法来让java完成链表

分别定义了Node、Linklist、Test三个类,看如下代码:

Node代码:

public class Node {
	//定义链表的value,存放值
	public int node;
	//定义链表的指针,让它来指向下一个值的地址,使用Node类型就是因为值传递中要传递的是Node类型的数据
	Node next;
	//用构造器把值来存到堆中
	public Node(int node) {
		this.node=node;
	}
}

Linklist代码: 

//链表的管理类
public class Linklist {
    //把链表放入堆中,方便管理
	Node head=null;
	public Linklist() {
		// TODO Auto-generated constructor stub
	}
	public void add(int n) {
		Node node=new Node(n);
		//定义头指针来判断是否有元素
		if(head==null) {
			head=node;
			return;
		}
		//定义游标tempNode,让它们指针连接起来
		Node tempNode=head;
		//如果游标的next不是null,让它遍历一遍,让游标指向倒数第二个元素
		while (tempNode.next!=null) {
			tempNode=tempNode.next;
			
		}
		//如果游标的next是null,让它的下一个指最新数据
		tempNode.next=node;
	}
	public void printLink() {
		Node temp=head;
		while (temp!=null) {
			System.out.println(temp.node);
			temp=temp.next;
			
		}
		
	}
}

Test代码: 

public class Test {
	public static void main(String[] args) {
		Linklist linklist=new Linklist();
		linklist.add(3);
		linklist.add(5);
		linklist.add(2);
		linklist.add(9);
		linklist.add(0);
		linklist.printLink();
	}
}

输出结果:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sshm_666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值