C语言栈与队列面试题实例分析


本文小编为大家详细介绍“C语言栈与队列面试题实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言栈与队列面试题实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。链接直达:有效的括号题目:思路:做题前,得先明确解题方案是啥,此题用栈的思想去解决是较为方便的,栈明确指出后进先出。我们可以这样设定:遇到左括号“ (”、“[ ”、“ { ”,入栈。遇到右括号“ ) ”、“ ] ”、“ } ”,出栈,跟左括号进行匹配,不匹配就报错。上两句话的意思就是说我去遍历字符串,如果遇到左括号,就入栈;遇到右括号,就出栈顶元素,并判断这个右括号是否与栈顶括号相匹配,若不匹配则返回false,匹配继续遍历字符串,直到遍历完全,遍历后,检查栈是否为空,若为空,则均匹配,返回true,反之false。代码如下:链接直达:用队列实现栈题目:思路:做题之前,再明确下两个基本知识点栈:后进先出队列:先进先出此题要用先进先出的队列来实现后进先出的栈,并模拟实现队列的基本接口。假设我们有一串数字,进入队列A顺序为1 2 3 4,此时再有一个队列B,此时我们取队列A的队头数据,并将其导入队列B,当队列A出到只剩最后一个时,把队列A给pop删掉,此时队列B就是1 2 3,间接性是实现了栈的功能,实现了后进先出的功能。当我们需要再入数据时,只需往不为空的队列入即可。再出就像刚刚那样。简而言之两句话:入栈:push数据到不为空的队列。出栈:把不为空的队列的数据前N-1导入另一个空队列,最后剩下一个删掉。本质:保持一个队列存储数据,另外一个队列空着,要出栈时,空队列用来导数据。代码如下:链接直达:用栈实现队列题目:思路:假设入栈的顺序为1 2 3 4,那么根据题意免费云主机域名,想要达到1234的出栈顺序以此实现队列。此题和上一道题正好相反,用栈实现队列,上一道题中,我们需要把数据来回导,从而实现栈的后进先出功能,但是此题就完全不需要来回导了,只需要导一次即可。假设我们有两个栈,分别命名为pushST和popST。并往栈pushST里头入4个数据1 2 3 4,在出数据时根据栈的性质只能拿到4,此时我们直接把4拿下来并导入栈popST里头,并继续把pushST栈里的数据导下来,直至栈pushST数据为空。此时popST数据即为 4 3 2 1,刚好反过来了。根据队列的先进先出规则,进1 2 3 4,出必然是1 2 3 4,而上文已经知晓栈popST的数据为4 3 2 1,当删除数据时,会按照1 2 3 4 的顺序逐个删除。恰好利用栈的性质实现了队列的先进先出功能。并只需导一次即可,无需多次。代码如下:链接直达:设计循环队列题目:思路:此题可以用数组实现,也可以用链表实现,但其实是用数组更加方便些。数组:假设队头front和队尾tail都指向第一个数据,在队尾插入数据,tail随着数据的插入跟着移动,tail始终为最后一个数据的下一个位置。删除数据只需要将队头front往后挪即可,不需要按照之前队列的pop一样删完还挪动数据,因为是循环链表,且数据是可以重复利用的。这样分析下来再加上画图看似没有什么缺陷,但是存在两个问题?什么情况下数组为空?什么情况下数组满了?问题1:当tail = front时数组为空,看似没什么问题,但相等又要分两种情况。先画个图:由上图得知,在情况一下,数组里确实是一个数据也没有,并且tail也是等于front的,满足数组为空的条件,但是在情况二下,数组的数据全满,此时的tail和front同样是相等的,这里数组不为空了,而是全满,由此可见,是存在问题的。解决方案:这里我们可以多开一个空间,不存放数据,只是用来分别数组为空或满。原理如下:当数组长度为4时,也就是说实际能存放3个有效数据,另外一个空间用来判断空或满,此时判断空或满的条件如下:front == tail 时是空tail下一个位置是 front 时,就是满代码如下:读到这里,这篇“C语言栈与队列面试题实例分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: 怎么使用python groupby函数实现分组选取最大值与最小值

本文小编为大家详细介绍“怎么使用pythongroupby函数实现分组选免费云主机域名取最大值与最小值”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用pythongroupby函数实现分组选取最大值与最小值”文章能帮助大家解决疑惑,下面跟着小编的思路慢…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 04/12 16:24
下一篇 04/12 16:36

相关推荐