C++程序中关于堆栈程序的简单理解
2018-01-10 17:26
316 查看
#include "stack.h"
Stack::Stack() // create an empty stack
{
top = 0;
}
bool Stack::isempty() const
{
return top == 0;
}
bool Stack::isfull() const
{
return top == MAX;
}
bool Stack::push(const Item & item)
{
if (top < MAX)
{
items[top++] = item;
return true;
}
else
return false;
}
bool Stack::pop(Item & item)
{
if (top > 0)
{
item = items[--top];
return true;
}
else
return false;
}
首先想说的是push程序,push程序主函数中的s.pop(a)调用push函数,通过引用将a传递给引用变量item,这个如果看了原版的普拉达的书应该知道item 就是声明的无符号长整型变量,所以是可以划等号的,items[top++] = item;入栈存数据相信大家都能看懂吧,就是将进来的数据传递给存储的数组,然后top变量加1,也就相当于指针,指向下一个数组元素,所以对大部分1人来说,入栈是很好理解的,但是出栈很多人包括我,迷惑了好久。我硬是把pop函数作用理解偏了。item = items[--top];我先来解释一下这个时候,为什么选择top是先减一,然后再执行数组元素。因为此时,因为入栈以后,我们已经把top处理为指向为将要存储下一个数组元素的地址了,也就是它现在此时是待存状态,还没有存。但是我们已经处理了top++了,所以,当我们出栈的时候,首先必须将top先减1,然后我们再作赋值。item
= items[--top];,将其以前存储的元素赋值给引用变量item。然后将数据出栈,返回到主函数中,通过调用就完成了数据的出栈工作。
可能理解的有偏差的地方,写给自己以后翻阅的。不喜勿喷,
Stack::Stack() // create an empty stack
{
top = 0;
}
bool Stack::isempty() const
{
return top == 0;
}
bool Stack::isfull() const
{
return top == MAX;
}
bool Stack::push(const Item & item)
{
if (top < MAX)
{
items[top++] = item;
return true;
}
else
return false;
}
bool Stack::pop(Item & item)
{
if (top > 0)
{
item = items[--top];
return true;
}
else
return false;
}
首先想说的是push程序,push程序主函数中的s.pop(a)调用push函数,通过引用将a传递给引用变量item,这个如果看了原版的普拉达的书应该知道item 就是声明的无符号长整型变量,所以是可以划等号的,items[top++] = item;入栈存数据相信大家都能看懂吧,就是将进来的数据传递给存储的数组,然后top变量加1,也就相当于指针,指向下一个数组元素,所以对大部分1人来说,入栈是很好理解的,但是出栈很多人包括我,迷惑了好久。我硬是把pop函数作用理解偏了。item = items[--top];我先来解释一下这个时候,为什么选择top是先减一,然后再执行数组元素。因为此时,因为入栈以后,我们已经把top处理为指向为将要存储下一个数组元素的地址了,也就是它现在此时是待存状态,还没有存。但是我们已经处理了top++了,所以,当我们出栈的时候,首先必须将top先减1,然后我们再作赋值。item
= items[--top];,将其以前存储的元素赋值给引用变量item。然后将数据出栈,返回到主函数中,通过调用就完成了数据的出栈工作。
可能理解的有偏差的地方,写给自己以后翻阅的。不喜勿喷,
相关文章推荐
- 关于static与堆栈的简单理解
- 关于Java堆栈的简单理解
- 菜鸟发问,请各位不吝赐教啊! 关于一个简单的程序的理解问题
- 关于指针的内存申请的简单理解(1)
- 关于使用Spring和hibernate开发web程序的配置说明和简单实例的详细说明
- 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 理解JAVA程序逻辑及面向对象编程思想简单总结(1)
- 个人对于堆栈的理解(简单通俗)
- 关于程序的理解_Terry Crowley
- 关于闭包的简单理解
- 关于SVM的简单理解
- 关于android.intent.action.MAIN和android.intent.category.LAUNCHER的简单理解
- c语言中堆栈的简单理解
- 最简单groovy程序的执行堆栈
- 关于 威客,创客,极客,黑客的哲学理解(简单)
- 通过简单的售票程序理解多线程
- [Vue][自定义事件]关于组件prop双向绑定的理解和程序调试
- 关于java运行的简单理解
- 关于程序中乱码解决方案上:乱码理解篇
- 通过汇编一个简单的C程序,分析汇编代码理解计算机工作原理