039课后习题栈类
class Stack:def __init__(self, start=[]):
self.stack = []
for x in start:
self.push(x)
def isEmpty(self):
return not self.stack
def push(self, obj):
self.stack.append(obj)
def pop(self):
if not self.stack:
print('警告:栈为空!')
else:
return self.stack.pop()
def top(self):
if not self.stack:
print('警告:栈为空!')
else:
return self.stack[-1]
def bottom(self):
if not self.stack:
print('警告:栈为空!')
else:
return self.stack
这个代码主要是模拟栈的压入和弹出的,要是我想压入fish这个单词,是不是应该在实例化时给start赋值为‘hsif’,之后压入栈中,之后按顺序弹出元素分别是f,i,s,h啊? 你对列表是不是有点误解啊?
弹出的是列表的一个元素,不是列表的元素的元素。 本帖最后由 Twilight6 于 2020-6-26 15:30 编辑
楼上说的对,我觉的你应该是想这样的:
记着栈是 先进后出 ,后进先出的原则就好了
你如果想分别压入 f i s h ,那么按顺序来看是 f -> i -> s -> hf 是最先放入栈中的
如果你取出,则顺序是h -> s -> i -> f 这样的
所以你分别压入 h s i f 才是分别弹出f i s h
如果你压入 fish那么 弹出也为 fish 了
是的。 Twilight6 发表于 2020-6-26 15:26
楼上说的对,我觉的你应该是想这样的:
记着栈是 先进后出 ,后进先出的原则就好了
fish入栈顺序是f>i>s>h,f在栈底,h在栈顶,出栈是h>s>i>f,对吧,之后打印的话,从上到下是fish对吧,是这个意思吗? lingedu 发表于 2020-6-26 16:36
fish入栈顺序是f>i>s>h,f在栈底,h在栈顶,出栈是h>s>i>f,对吧,之后打印的话,从上到下是fish对吧,是 ...
fish入栈顺序是f>i>s>h,f在栈底,h在栈顶,出栈是h>s>i>f,对吧
对的
之后打印的话,从上到下是fish对吧,是这个意思吗?
从上到下 应该是 hsif ,不是 fish,你自己都理解了 h 是栈顶 怎么就从上到下变回 fish 了呢哈哈 Twilight6 发表于 2020-6-26 16:54
对的
啊对,先打印的是栈顶
页:
[1]