数据结构面试

分为逻辑结构和存储结构。

逻辑结构:表示数据之间的相互关系。

存储结构:数据在内存的存储形式。

逻辑结构:

1.集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系; 

2.线性结构:数据结构中的元素存在一对一的相互关系; 

3.树形结构:数据结构中的元素存在一对多的相互关系; 

4.图形结构:数据结构中的元素存在多对多的相互关系。

线性结构就是表中各个结点具有线性关系。(线性表、栈、队列、数组)(线性表包括链表和顺序表)

非线性结构就是表中各个结点之间具有多个对应关系。(树、图)

链表和顺序表的区别:

顺序表里面元素的地址是连续的,空间连续,支持随机访问

链表里面节点的地址不是连续的,是通过指针连起来的。不支持随机访问

 

物理结构又叫存储结构,分为四种种,顺序存储结构、链式存储结构、索引结构、散列结构。

1.顺序存储结构:

一段连续的内存空间。

优点:随机访问

缺点:插入删除效率低,大小固定

                              

2.链式存储结构:

不连续的内存空间

优点:大小动态扩展,插入删除效率高

缺点:不能随机访问。

                                      

3.索引存储结构:

为了方便查找,整体无序,但索引块之间有序,需要额外空间,存储索引表。

优点:对顺序查找的一种改进,查找效率高

缺点:需额外空间存储索引

4.散列存储结构:(哈希=散列)

选取某个函数,数据元素根据函数计算存储位置可能存在多个数据元素存储在同一位置,引起地址冲

优点:查找基于数据本身即可找到,查找效率高,存取效率高。

缺点:存取随机,不便于顺序查找。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++数据结构面试中,面试官可能会考察你的基础和实际应用能力。以下是一些常见的面试问题及知识点: 1. 常见的数据结构有哪些?(如数组、链表、栈、队列、堆、哈希表、树、图等) 2. 各种数据结构的特点和适用场景是什么? - 数组:连续存储,随机访问快,插入删除慢。 - 链表:动态分配内存,插入删除高效,但查找效率低。 - 栈:后进先出(LIFO)结构,常用于表达式求值、递归调用等。 - 队列:先进先出(FIFO),广度优先搜索(BFS)使用。 - 堆:最大/最小堆,用于优先队列。 - 哈希表:快速查找,适合键值对存储,如字典或关联数组。 - 树:搜索、排序、分层等问题常用,如二叉搜索树、AVL树、红黑树、B树等。 - 图:表示复杂关系,深度优先搜索(DFS)、广度优先搜索(BFS)。 3. 如何实现一些基本操作?(如在链表中添加/删除元素,数组的排序,哈希表的查找插入等) 4. 排序算法:如何实现冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等? 5. 树和图的遍历算法(深度优先搜索、广度优先搜索、前序遍历、中序遍历、后序遍历等)。 6. 算法复杂度的理解:时间复杂度(O(n)、O(log n)、O(n^2)等)和空间复杂度(常数空间、线性空间等)的概念。 7. 高阶数据结构的理解:如堆栈、队列、双端队列(deque)、优先级队列(优先堆)、并查集、图的邻接矩阵和邻接表等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值