面试题(2)
来源:互联网 发布:手机淘宝怎么改中评 编辑:程序博客网 时间:2024/06/05 22:44
表
- 有哪几种表的实现方式:顺序实现(顺序表:用一组地址连续的存储单元依次存储线性表的数据元素)和链式实现
- 使用顺序实现时,缺点在于需要预先分配表的大小,在超过原有大小后需要重新分配连续的空间;链式实现不用预先分配大小,但是需要额外的空间来存储节点指针以实现表的逻辑关系
- 链表的分类:单链表、循环链表和双向链表
- 单链表:指的是链表中节点指针只能指向链表中的下一个元素或者为空
- 双向链表:每个链表节点既有指向下一个节点的指针,又有指向前一个节点的指针
- 循环链表:在单链表和双向链表基础上,将这两种链表的最后一个节点指向第一个节点从而实现循环
队列
队列是一种特殊的线性表(先进先出),队列的插入和删除操作分别在线性表的两端进行
什么是队列:队列是一种线性表,队列的插入(队尾)和删除操作(队头)分别在表的两端进行,是一种先进先出的线性表
什么是栈:通过对线性表的插入和删除操作(栈顶)进行限制而得到(插入和删除操作都必须在表的同端完成),是一个先进后出的线性表
- 如何访问栈中的元素:主要是针对栈顶的元素进行访问,不能直接访问其他位置的栈元素
树
树是一种数据结构,它是由n(n>=1)个有限节点组成的一个具有层次关系的集合
- 树的分类:根据树的节点的关系不同,可以分为有序树(子树的位置自左向右有次序关系,顺序决定了大小)和无序树;
- 树是n个节点的有限集T;T为空时称为空树,否则满足如下两个条件:
- 有且仅有一个特定的称为根的节点
- 其余的节点可分为m个(m>=0)个互不相交的子集T1、T2…Tm,其中每个子集本身又是一棵树,并称其为根的子树
- 树是n个节点的有限集T;T为空时称为空树,否则满足如下两个条件:
- 如何对树进行遍历:遍历就是通过一种方法按照一定的顺序访问一棵树的过程。
- 深度优先遍历:先访问根节点,再逐个访问子节点
- 广度优先遍历:对树中的节点逐层进行访问
- 二叉树遍历:先序遍历、中序遍历和后序遍历
- 先序遍历:访问根节点;先序遍历左子树;先序遍历右子树
- 中序遍历:中序遍历左子树;访问根节点;中序遍历右子树
- 后序遍历:后序遍历左子树;后序遍历右子树;访问根节点
- 二叉树可分为满二叉树、完全二叉树
- 如何计算二叉树的高度:通过使用后序遍历的方式计算二叉树的高度。可以先计算左子树的高度hl,后计算右子树的高度hr,然后树的高度则是h1和hr中较大的值加上1
- 如何计算二叉树的节点数:二叉树的遍历就是访问二叉树的全部节点,且每个节点只访问一次。可以在3种遍历方法中,在对二叉树进行遍历时使用一个变量计算二叉树的节点数。
排序
冒泡排序:基本原理是依次比较相邻的两个数,将大数放在下面,小数放在前面。
- 什么是选择排序:从需要排序的队列数据中选择最小的同第一个值交换,再从剩下的部分中选择最小的与第二个交换,依次循环下去,最后实现全队列的排序
- 什么是直接插入排序:依次取待排列数组的元素,将其插入到前面有序的数组中
- 快速排序:
- (1)首先对待排序的序列进行分解,任取序列中的某个数据元素作为枢轴,序列被划分成两个子序列,左侧子序列所有元素均小于枢轴元素,右侧子序列所有元素均大于枢轴元素,枢轴位于两个子序列中间
- (2)递归调用快速排序
- (3)最后两种子排序已经排序,合并
阅读全文
0 0
- 面试题(2)
- 面试题(2)
- 面试题(2)
- 面试题(2)
- 面试题(2)
- java面试题(2)-集合相关面试题
- jsp面试题(2)
- .net面试题(2)
- Java面试题(2)
- JAVA面试题(2)
- 面试题系列(2)
- 百度面试题(2)
- 面试笔试题(2)
- 算法面试题(2)
- ios面试题(2)
- iOS面试题(2)
- cocos2dx面试题(2)
- .NET面试题(2)
- ueditor基本配置使用
- Scrapy爬取1
- Centos 6.5搭建Hadoop-2.7.3分布式集群的那些坑
- 系统架构之数据库水平切分实现方案详解-精华
- 红黑树
- 面试题(2)
- 稳赚不赔股市大师论
- 分布式幂等性的相关问题
- 快排?跳排?
- linux学习笔记三
- Python学习笔记 6--高阶函数、面向对象编程
- c++中static 和const的作用
- 15物联网签到帖
- java和c语言变长参数的底层实现区别