回 帖 发 新 帖 刷新版面

主题:求高手教一下栈是怎么回事。。。。。

我们离散数学的实验,求一个逻辑表达式的真值表。
里面会用到栈,但是我对栈不是很了解,
希望有人教一下,然后举几个例子,说明怎么用的,
说一下关于栈的函数。

急需,谢谢

回复列表 (共3个回复)

沙发

栈可以看成是一种容器,你可以把一些东西放到这个容器中,然后再取出来,但必须遵守一个规则:先方进去的东西一定后被取出来,后放进去的东西一定先被取出来。
想象你有一个竹筒,若干的豆子,豆子的直径只比竹筒的口径小一点点,这样一来,如果你把豆子装进竹筒里,则先进去的豆子一定后出来,后进去的豆子一定先出来。这里,竹筒酒相当于“栈”,豆子就相当于“栈”里面的元素。
“栈”的基本操作有两种:入栈和出栈。入栈就是把一个元素加入到栈之中,出栈就是把最后一个进入到栈之中的元素取出来。根据实际情况,可能还需要一些辅助操作,比如:判断栈之内目前存放了多少个元素。

用C语言的话,简单情况下,可以用一个数组来当作栈。
#define STACK_MAX_SIZE 100  // 假设栈最多可以容纳100个元素
int stack[STACK_MAX_SIZE]; // 用数组来做一个栈
int stack_size = 0; // 开始时,栈之内的元素数目为零

如果需要把一个元素加入到栈之内,可以这样写:
stack[stack_size] = k;
++stack_size;
(其中k是即将被加入到栈之内的元素)
注意:因为是用数组来做,所以最多只能有STACK_MAX_SIZE个元素,超过这个限制,程序就会出错了。

如果需要把栈之内的最后一个元素取出,可以这样写:
--stack_size;
k = stack[stack_size];
(其中k是从栈之内取出的元素)
注意:如果栈里面一个元素也没有,也就是stack_size为零,此时是无法取出任何元素的。从代码上看,k = stack[stack_size];这句stack_size等于-1,程序会出错。

板凳

谢谢,挺细的

3 楼

数据结构里有。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册