数据结构简答题汇总.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构简答题 1、简述逻辑结构与存储结构的联系和区别。答: 联系:数据的逻辑结构与存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构 在数据结构中,逻辑结构与计算机无关,存储结构是数据元素之间的逻辑关系在计算机中的表示。存储结构不仅将逻辑结构中所有数据元素存储到计算机内存中,而且还要在内存中存储各数据元素间的逻辑关系。通常情况下,一种逻辑结构可以有多种存储结构,例如,线性结构可以采用顺序存储结构或链式存储结构表示。 2、简述顺序表和链表存储方式的特点。答: 顺序表的优点是可以随机存取元素,存储密度高;缺点是不便于插入和删除元素(需要移动大量的元素)。链表的优点是便于节点的插入和删除(只需要修改指针域,不需要移动节点) ; 缺点是不能进行随机访问,只能顺序访问,另外,每个节点上增加指针域,导致存储密度较低。 3、头指针和头结点的区别答: 头指针是指在第一个结点之前的指针,它是一个链表存在的标志,是必须存在必不可少的。 头结点是第一个结点之前的结点,它是为了方面在第一个结点之前进行元素的插入和删除操作,它不是必须的,并且数据域也可以不存放信息。 4、栈和队列的区别答: 栈是只能在一端进行插入和删除的线性表,插入和删除都在栈顶进行,它的特点是“先进后出”。常用于括号的匹配问题,递归问题,但是递归问题要注意堆栈的溢出现象 队列是在一端插入在另一端删除的线性表,插入的那端是队尾,删除的那端是队首,特点是 “先进先出”,在层次遍历和 BFS 算法、迪杰斯特拉算法中使用到 5、解释带头结点的单链表和不带头结点的单链表的区别。答: 带头结点的单链表和不带头结点的单链表的区别主要体现在其结构上和算法操作上。 在结构上,带头结点的单链表,不管链表是否为空,均含有一个头结点,不带头结点的单链表不含头结点。 在操作上,带头结点的单链表的初始化为申请一个头结点。无论插入或删除的位置是地第一个结点还是其他结点,算法步骤都相同。不带头结点的单链表,其算法步骤要分别考虑 6、贪心算法、动态规划和分治算法。答: 贪心算法是指从上到下,每次都求解局部最优解的算法,特点是每次求解最优解,但是最终的结果不一定是最优,经典例子是背包问题。 动态规划是将一个大问题划分成若干个子问题,问题之间存在重叠,从上到下,求解整体最优解,每一次的求解会对下一次的问题造成影响,最终的最优解不一定包含每次的最优解, 但是一定有部分最优解。经典例子是求最长子串。 分治算法是将一个大问题划分成若干个和大问题相似的子问题,再对子问题进行递归求解, 最终合并得到最后的结果。特点是大问题的划分与子问题相似,并且每个问题之间是相互独立的。经典例子是二路归并排序、快速排序插入或删除的位置是第一个结点还是其他结点。因为两种情况的算法步骤不同。 7、共享栈答: 利用栈底位置不变的特性,让两个顺序栈共享同一个一维数组空间,将两个栈的栈底分别设在共享空间的两端,两个栈顶向共享空间延伸。 8、如何区分循环队列是队空还是队满? 答: 有两种区分方式: ①牺牲一个单元来区分队空和队满队空:队首指针 == 队尾指针; 队满:(队尾指针+1) % maxsize == 队首指针 ②在结构体中增设表示元素数据的内存单元队空:元素的个数为 0 队满:元素的个数为 Maxsize 9、栈和队列的异同点? 答: 栈与队列的相同点: ①都是线性结构。 ②插入操作都是限定在表尾进行。 ③都可以通过顺序结构和链式结构实现。 ④插入与删除的时间复杂度都是 O(1),在空间复杂度两者相同。 栈与队列的不同点: ①删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。 ②应用场景不同,常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。 ③顺序栈能够实现多栈空间共享,而顺序队列不能。 10、利用两个栈 s1,s2 模拟一个队列时,如何用栈的运算实现队列的插入,删除以及判队空运算。请简述这些运算的算法思想。 答: 栈的特点是后进先出,队列的特点是先进先出。所以,当用两个栈 s1 和 s2 模拟一个队列时, s1 作为输入栈,逐个元素压栈,以此模拟队列元素的入队。当需要出队时,将栈 s1 退栈并逐个压入栈 s2 中,s1 中最先入栈的元素在 s2 中处于栈顶。s2 退栈,相当于队列的出队, 实现了先进先出。只有栈 s2 为空且 s1 也为空时,才算是队列空。 11、栈在括号匹配中的算法思想答: ①如果是左括号,则入栈 ②如果是右括号,则判断当前栈是否为空,如果为空,则不匹配,不为空,则看是否与栈顶的左括号匹配,如果匹配,则栈顶元素出栈

文档评论(0)

151****8098 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8074051114000005

1亿VIP精品文档

相关文档