设计一个算法,删除s栈中所有值为item的元素,其余元素的相对次序仍保持不变。

用Python实现,设计一个算法,删除s栈中所有值为item的元素,其余元素的相对次序仍保持不变。
算法不能假设栈的具体实现方法,即只需调用栈的基本操作来完成。

这位来自安财信管专业的同学,不要考虑你的作业了,陈老师一定会给你零分的,嘿嘿嘿

用列表模拟栈:

img


大致原理如下:

>>> a = [1,2,0,3,0,4,5,0,6]
>>> b = []
>>> while a:
    t = a.pop()
    if t!=0:
        b.append(t)

        
>>> a
[]
>>> b
[6, 5, 4, 3, 2, 1]
>>> while b:
    a.append(b.pop())
    
>>> a
[1, 2, 3, 4, 5, 6]
>>> b
[]

s = [ x for x in s if x != item]

不就是两个栈的来回倒腾吗?