数据结构基础
- 栈和队列的相同和不同
- 不同点:
- 删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。
- 应用场景不同;常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。
- 顺序栈能够实现多栈空间共享,而顺序队列不能。
- 相同点:
- 都是线性结构。
- 插入操作都是限定在表尾进行。
- 都可以通过顺序结构和链式结构实现。
- 插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。
- 多链栈和多链队列的管理模式可以相同。
- 不同点:
- 平衡二叉树如何构造
- 定义:
- 平衡二叉树又称为AVL树,它或者是一棵空树,或者是有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左右子树的深度之差的绝对值不超过1。二叉树的的平衡因子为:该结点的左子树的深度减去它的右子树的深度,则平衡二叉树的所有结点的平衡因子为只可能是:-1、0和1
- 构造:
- LL型:插入位置为左子树的左节点,向右旋转
- RR型:插入位置为右子树的右节点,向左旋转
- LR型:插入位置为左子树的右节点,先左旋再右旋。
- RL型:插入位置为右子树的左节点,先右旋再左旋。(后面2种需要先调整插入位置,再调整最小补平衡树。待附图)
- 定义:
- 双向链表中删除一个结点操作
- 找到被删除的结点p
- p->prior ->next = p->next
- p->next ->prior = p->prior
- delete p
- 个人对于数据结构的认识,可以结合实际谈谈
- 这个问题比较广泛,本人只是简单用食堂作为一个场景。
- 严格排队 -> 队列,先进先出。
- 出现插队 -> 链表结点加入
- 打菜,访问服务器,负载均衡
- 等等。。。
- 可以充分发挥想象力。
- 这个问题比较广泛,本人只是简单用食堂作为一个场景。