1.链表与数组,统称线性表
(1)链表的首尾相接,每个元素只有一个前驱和后继;数组依靠索引来执行getElement,所以n个链表执行getELement操作最多会遍历n个元素,数字直接可以获取
(2)链表删除元素只需要改变后继和前驱,数组需要将删除元素后所有元素迁移一位
需要通过getElement获取元素然后删除,此时链表与数组操作耗时无法确定
(3)链表添加元素改变前驱和后继,数组需要后移操作
(4)数组在逻辑上相邻的元素在物理位置上也相邻,链表在物理上可以连续也可以不连续
2.二叉树
基本性质:
二叉树必须是有序的;
每个节点最多有两个子结点;
二叉树第i层最多有2^(i-1)个结点;
深度为k的二叉树最多有(2^k) -1个结点;
升序二叉树 L(左结点) < N(根节点) < R(右结点);
降序二叉树 L(左结点) > N(根节点) > R(右结点);
二叉树相关概念:
满二叉树:除最后一层外,每个节点都有两个子节点。
完全二叉树:除最后一层和倒数第二层,每个节点都有两个子节点,且最后一层的结点连续集中靠左。
霍夫曼树:结点要么没有子节点,要么有两个子节点。
平衡二叉树:当且仅当两个子树的高度相差不超过1。
满二叉树是完全二叉树,但是完全二叉树不是满二叉树。
二叉树是有序的,中序遍历为二叉树的有序输出。
3.进制多项式
二进制:P(n)=p_0*2^0+p_1*2^1+p_2*2^1+⋯+p_(n-1)*2^(n-1)+p_n*2^n
十进制:P(n)=p_0*10^0+p_1*10^1+p_2*10^1+⋯+p_(n-1)*10^(n-1)+p_n*10^n
可扩展为N进制:P(n)=p_0*N^0+p_1*N^1+p_2*N^1+⋯+p_(n-1)*N^(n-1)+p_n*N^n
最终(p_0,p_1,p_2⋯⋯p_n-1,p_n)属于进制集合[0,1]或[0,1,2,3,4,5⋯8,9]或[0,1,2,3,4⋯n-1,n]
进制转换使用栈做存储
简单算法:N = N (div d) X d + N mod d (其中div为整除运算,mod为求余运算)
4.非基本类型的数据都是对象
所以数组int[] a = {1, 2, 3}也是对象
5.ArrayList与Vectory、LinkedList
ArrayList与Vectory都是数组,不同的是Vector所有的public方法都使用synchronized修饰,所以Vector是线程安全的;
LinkedList的底层是双向链表;
ArrayList与Vectory插入数据性能弱于LinkedList;
ArrayList与Vectory的查找性能强于LinkedList;
6.枚举范例
public enum Category { NEWS(0),//1 TOPIC(1),//2 MINE(2),//3 LOGIN(4),//4 REGISTER(5);//5 private int mValue = 0; private Category(int value) { mValue = value; } public static Category valueOf(int value) { Category category = Category.NEWS; switch (value) { case 0: category = Category.NEWS; break; case 1: category = Category.TOPIC; break; case 2: category = Category.MINE; break; case 3: category = Category.LOGIN; break; case 4: category = Category.REGISTER; break; } return category; } }
1500

被折叠的 条评论
为什么被折叠?



