java数据结构博客园_Java数据结构

一、线性数据结构

1、Java一维数组的创建

(1)预先定义数组的内存空间

int[] arr = new int[3];

// new int[3]是代表创建3个内存地址空间

// 地址空间的序号是按照0开始的,也就是说0为1号位置

arr[1] =2; //每二个内存地址空间都赋一个值 第二个位置赋值 2

arr[2] =4; //第二个内存地址空间赋值为 4

arr[0] =3; //第一个内存地址空间赋值为 3

//for循环遍历arr每一个数组元素并且打印for (int i=0;i

System.out.println(arr[i]);

}

(2)   ArrayList的创建和使用

import java.util.ArrayList;

import java.util.LinkedList;

public class Case {

public static void main(String[] args){

ArrayList data = new ArrayList();

//add是增加某个元素

data.add(1);

data.add(3);

data.add(2);

data.add(4);

for (int i=0;i< data.size();i++) {

//get是通过索引获取元素

System.out.println(data.get(i));

}

System.out.println("------------------------");

//移除某个索引上的元素

data.remove(2);

for (int i=0;i< data.size();i++) {

System.out.println(data.get(i));

}

System.out.println("------------------------");

/**

* data有1,2,4三个元素

*/

//判断ArrayList是否为空

System.out.println(data.isEmpty());

//获取某个元素的索引

System.out.println(data.indexOf(4));

}

ArrayList的内存地址是相邻的,假设动态数组A有3个元素a1,a2,a3.如果a1地址为1,则a2,a3为2,3.所以他的遍历速度很快,获得元素很快,弊端就是插入和删除节点时速度较慢,就比如在1号索引插入数据a4则a4的内存地址为2,那么原先1号地址的a2以及后面的元素将全部后移。

(3) LinkedList的创建和使用(基于链表的数据结构)

public static voidmain(String[] args) {//创建链表(import java.util.LinkedList)

LinkedList data = new LinkedList<>();//add(index,element)增加

data.add(0,2);

data.add(3);

data.add(4);

data.add(5);for(int i=0;i

System.out.println(data.get(i));

}//判断是否包含元素3

System.out.println(data.contains(3));

}

链表数据结构,的内存地址是不连续的具体如下图所示:

22b0a002ef90ef462f37b663177ef9c5.png

得益于其内存地址无规律,其链表结构图也从侧面反应了,在某个地方增加节点(删除)其后续节点不需要移动,所以其增删性能优于动态数组。

二、非线性结构

其结构如下图所示:

b80cc9eeb7e415c86b5f56f8313bc799.png

A,B,C称为节点,连接节点之间的线称为边。CDF成为叶节点(因为它们没有字节点),而A为根节点。

常见的树型:二叉树(树的每个节点最多只能有两个子节点)

(1)二叉搜索树要求:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;    它的左、右子树也分别为二叉排序树。

f998be703b47947bd097200ad4d1fbdf.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值