c语言用栈,C语言用栈实现计算器的算法

dfnjsfkhak 32 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言用栈的问题,于是小编就整理了4个相关介绍c语言用栈的解答,让我们一起看看吧。

  1. c栈的使用?
  2. c语言编译是在栈里嘛?
  3. c语言中为什么栈的初始化时候栈顶指针要指向-1?
  4. c语言赋值语句如何压栈?

c栈的使用

堆栈就是先入后出的数据结构

如果用c语言来实现的话用个struct

c语言用栈,C语言用栈实现计算器的算法-第1张图片-芜湖力博教育咨询公司
图片来源网络,侵删)

定义一个栈的节点

struct

node;

c语言用栈,C语言用栈实现计算器的算法-第2张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

typedef

strcut

node

c语言用栈,C语言用栈实现计算器的算法-第3张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

*

position;

c语言编译是在栈里嘛?

不是。在c/c++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈:就是那些由编译器需要时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。

栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

c语言中什么栈的初始化时候栈顶指针指向-1?

这种初始化是用于线性栈的,也就是用一个数组来组成栈,栈顶指针值为当前栈顶元素下标值。当有数据入栈时,会先执行栈顶指针自加。初始化为空栈,规定空栈的时候指向-1,这样在有第一个元素入栈的时候栈顶指针就可以通过自加指向0元素,从而避免其它。

c语言赋值语句如何压栈?

方法简单:你讲两个栈都传进去,类似于 : int pus(SeqStack1 *s, DataType* x1, SeqStack2 *s, DataType* x2)(SeqStack1是你的第一个栈,SeqStack2是第二个栈,DataType是你需要传进去的数据的类型),然后这个函数里面先判断x1 ,x2是否为空,如果为空,则他对应的那个栈不需要压栈,如果不为空,则执行相应的压栈操作。 不明白继续追问!

到此,以上就是小编对于c语言用栈的问题就介绍到这了,希望介绍关于c语言用栈的4点解答对大家有用

标签: 语言 指针 时候