数据结构中栈的入栈和出栈操作2025年1月30日 | 阅读 7 分钟 栈是一种线性数据结构,它使用后进先出 (LIFO) 的概念。队列有两个端点,而栈只有一个(头和尾)。它只有一个指针,即栈顶指针,指向栈顶的元素。当一个元素被添加到栈中时,它总是添加到顶部,并且只能从栈中移除。换句话说,栈是一个允许在称为栈顶的一端进行插入和删除的容器。 后进先出 (LIFO)根据这种方法,最后添加的元素会最先出来。作为一个实际的例子,考虑一叠叠起来的盘子。我们可以说最后放上去的盘子会最先拿出来,因为最后放上去的盘子在最上面,我们从最上面取盘子。 由于可能低估存货价值,后进先出 (LIFO) 不是期末存货价值的可靠指标。由于销货成本 (COGS) 增加,LIFO 会导致净收入(和税收)减少。然而,在通货膨胀期间采用 LIFO 会减少存货减记。平均成本法的结果介于先进先出 (FIFO) 和后进先出 (LIFO) 之间。 LIFO 的现实生活示例假设公司 A 销售 10 个小部件。每个售价 100 美元,前五个小部件是两天前送达的。剩余的五个小部件,每个成本 200 美元,昨天刚送达。根据 LIFO 的库存管理技术,最后收到的商品是第一批出库的。会计师可以将多少成本记入账簿,即使售出了七个小部件? 虽然每个小部件的收入相同,因为其销售价格固定,但每个小部件的成本取决于所使用的库存方法。根据 LIFO 机制,最后收到的商品是第一件售出的。因此,200 美元的小部件是第一批售出的。之后,该公司又售出了两个 100 美元的小部件。五件小部件的价格为 200 美元,两件价格为 100 美元,使用 LIFO 方法的小部件总成本为 1200 美元。与 FIFO(最后售出 200 美元的小部件)相反,LIFO 方法先售出 100 美元的小部件。因此,售出小部件的价格(分解为五件 100 美元和两件 200 美元)将报告为 900 美元。这就是为什么 LIFO 在价格上涨期间会产生更高的利润。 因此,在价格上涨时期,LIFO 会增加费用并降低净收入,这也会降低应税收入。类似地,在价格下跌时期,LIFO 会降低费用并增加净收入,这也会增加应税收入。 栈与数组栈:栈是一种线性数据结构,其元素只能从列表的顶部添加或移除。栈遵循后进先出 (LIFO) 原则,这意味着最后插入的元素是第一个被移除的元素。将元素添加到栈中称为压栈 (push) 操作,从栈中移除元素称为弹栈 (pop) 操作。栈中使用一个名为 top 的指针来跟踪列表中当前存在的最后一个元素。 数组:数组是存储在连续内存区域中的一组对象。其目的是将相同类别的对象分组存储。因此,通过简单地向基值(即数组的第一个元素存储的内存地址,通常用数组名表示)添加偏移量,可以更容易地确定每个元素的位置。 ![]() push()它会压入一个新项目。当栈已满时,会发生栈溢出情况。 push() 算法 push()它会压入一个新项目。当栈已满时,会发生栈溢出情况。 push() 算法 pop()它会从栈中移除一个项目。项目会按照与压入顺序相反的顺序弹出。当栈为空时,这种情况称为栈下溢。 pop() 算法 在 C 中演示数据结构栈的压栈和弹栈操作的程序输出 10 pushed into stack 20 pushed into stack 30 pushed into stack 30 Popped from stack Top element is : 20 Elements present in stack : 20 10 ........................................................... Process executed in 3.22 seconds Press any key to continue. 说明 如上例所示,在 C 语言中进行压栈和弹栈操作时,我们压入了 10、20 和 30。成功将元素压入栈后,我们从栈中弹出了 30。为了检查元素是否已被弹出,我们通过对栈执行 top 操作来检查,结果是 20。 栈的压栈和弹栈操作 MCQ 练习问题 1:下列哪项完美地描述了栈数据结构中的 LIFO(后进先出)属性?
答案 B. 最后添加的元素最先被移除。 说明 栈的主要特点是,最后添加的元素(即最后一个)最先被移除,这被称为 LIFO 原则。这类似于一摞盘子,您拿走的最上面放的盘子就是您最后放上去的盘子。 问题 2:考虑以下对栈执行的操作序列:push(1), push(2), pop(), push(3), pop(), pop()。最后一次 pop 操作的结果是什么?
答案 C. 1 说明 以下是分步过程
问题 3:给定 C 语言中的栈实现,如果执行以下操作序列:push(5), push(10), push(15), pop(), show(),输出将是什么?
答案 B. 栈中的元素:10, 5 说明 操作序列如下
问题 4:如果在使用提供的 C 实现的栈操作中,对大小为 3 的空栈执行以下操作序列:pop(), push(1), push(2), push(3), push(4), show(),会发生什么?
答案 B. 溢出!! 说明 操作是
问题 5:在给定的 C 语言栈操作实现中,哪个条件准确地识别了栈下溢场景?
答案 D. 当 top 等于 -1 并且尝试进行 pop 操作时。 说明 在给定的 C 语言实现中,top 被初始化为 -1。当尝试从空栈中弹出元素时,会发生栈下溢。如果 top 为 -1,则栈被认为是空的,因此尝试在 top 为 -1 时弹出元素会导致下溢。 下一个主题二叉搜索树实现 |
我们请求您订阅我们的新闻通讯以获取最新更新。