重拾数据结构(一)

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;
    }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值