数据结构
来源:互联网 发布:sql insert 语法 编辑:程序博客网 时间:2024/06/03 19:29
1.常用的数据结构
数组:
1连续存储结构,下标从0开始;
2在一个数组中,数组元素类型是唯一的;
3数组在初始化后,在内存中站的空间是固定的,长度将不会改变;
String aa[]=newString[10]; aa.length=10;
4数组数据类型是引用类型;
5定义:type[] aa;type aa[];
6数组在没有定义下只是一个指针,没有内存空间,所以是无法使用的;
7数组初始化:静态:type[] aa=new type[]{a,b,c,d,e}/ type[]aa={a,b,c,d,e}
动态:type[] aa=new type[20];
8数组元素类型为byte,short,int,long默认值为0;
为float和double默认值为0.0, 为char,默认值为‘\u0000’
为boolean默认值为false,引用类型为null;
9遍历可以用for循环和foreach;
10数组名也就是引用变量放在栈内存中,而它指向的实际数组在堆内存;
11为了回收数组可以让它指向null;
12二维数组的定义:int[][] aa=new int[10][10]/={{1,2},{2,3},{3,4,5}};
13Arrays.toString(aa):将数组全变成一个字符串逗号隔开,可以输出;
Arrays.sort(aa)对元素进行排序,char类型和String都可以,Arrays.sort(aa,2,5)对下标2到5排序
Arrays.equals(aa,bb):全部相等返回true;Arrays.copyOf(aa,8)返回值为一个新数组;
链表:
1链表结构:[值][指针]->[值][指针]->[值][指针]->….[值][null]
2java开发:[值][指针]---为一个node;
public class Node{
public int data;
public Node next;
public Node(int data){
this.data= data;
}
}
3添加节点方法
public voidaddNode(Node node){
Node temp = head;//将节点指向一个链表的head
while(temp.next!=null){//遍历这个链表,然后temp一直遍历下去,直到指向end节点
temp =temp.next;
}
temp.next = node;//temp成为了这个链表的end,所以可以添加新的node,也就是我们要加的node
}
4插入节点:利用一个++机制,每遍历一个node就+1;然后到了需要插入的node那里,就将前一个node的next的值赋给一个临时值,然后让它指向这个插入的node,再将插入的node的next指向刚才的那个临时值。
5删除节点:利用++机制找到需要删除的位置,将其前一个的node指向其后一个node,也就是将其的node.next的值赋值给前一个node的next。
堆、栈:
1堆内存存放有new创建的对象和数组;
2堆中的分配的内存是有java的虚拟机自动垃圾回收器来管理的;
3函数的基本类型变量和对象的引用变量都是在函数的栈区的;
4堆是用来存放对象的,而栈是用来执行程序的;
队列:
1先进先出的原则
hash表:
散列表
二叉树:
遍历:
前序遍历:先根节点,在先左子树再右子树,根-左-右
中序遍历:先左子树再根再右子树,左-根-右
后序遍历:先左子树,再右子树,再根,左-右-根
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- Error:java:JDK isn't specified for module
- wordpress主题无法正常使用
- HashMap分别获取键和值
- 【笔记】从架构到算法,详解美团外卖订单分配内部机制
- r入门练习(三)
- 数据结构
- NSString属性使用copy还是strong
- 使用CSS绘制三角形
- 摘花生--动态规划
- Python 迭代(6)
- 绘图和可视化--Matplotlib
- Db2 client上load from cursor报错SQL1013N The database name .. could not be found
- 解决ssh客户端与服务器加密逻辑不匹配问题
- c语言库函数strtoul