数据结构

来源:互联网 发布: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表:

散列表

二叉树:


遍历:

前序遍历:先根节点,在先左子树再右子树,根-左-右


中序遍历:先左子树再根再右子树,左-根-右


后序遍历:先左子树,再右子树,再根,左-右-根