首页 > 编程知识 正文

堆栈用python(堆栈用什么表示)

时间:2023-12-19 12:29:24 阅读:317691 作者:TSSF

本文目录一览:

python 把列表当作堆栈使用方法是什么?

5.1.1. 把列表当作堆栈使用

列表方法使得列表可以很方便的做为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。例如:

stack = [3, 4, 5]

stack.append(6)

stack.append(7)

stack

[3, 4, 5, 6, 7]

stack.pop()

7

stack

[3, 4, 5, 6]

stack.pop()

6

stack.pop()

5

stack

[3, 4]

python有没有堆和栈的概念

堆与栈是C/C++语言内存管理和编译优化时使用的。

后来JAVA通常只考虑堆,栈偶尔考虑一下。

python与C密切结合。不过大部分时间你都不需要考虑堆与栈。

因为内存超过500MB会变慢。超过2GB,几乎不可能。

栈基本上不用考虑。不过,在递归时,这个短板就出来了。所以在python里,递归层次太多,要改用堆栈,而不能用递归。

Python记录详细调用堆栈日志的方法

Python记录详细调用堆栈日志的方法

这篇文章主要介绍了Python记录详细调用堆栈日志的方法,涉及Python调用堆栈日志的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

import sys

import os

def detailtrace(info):

retStr = ""

curindex=0

f = sys._getframe()

f = f.f_back # first frame is detailtrace, ignore it

while hasattr(f, "f_code"):

co = f.f_code

retStr = "%s(%s:%s)-"%(os.path.basename(co.co_filename),

co.co_name,

f.f_lineno) + retStr

f = f.f_back

print retStr+info

def foo():

detailtrace("hello world")

def bar():

foo()

def main():

bar()

if __name__ == "__main__":

main()

输出:

aaa1.py(module:27)-aaa1.py(main:24)-aaa1.py(bar:21)-aaa1.py(foo:18)-hello world

希望本文所述对大家的Python程序设计有所帮助。

python 如何用单向循环链表实现堆栈

Node没什么问题,就是变量定义的时候是一个下划线而不是两个

Stack这里有点问题,

(不知道你这里为啥需要做成一个循环的链表,不过不管了)

首先你得定义一个head和一个tail,这样的话才能把tail和head连接形成一个循环

初始化Stack的话把head和tail都设置成None表示这是个空的stack

push的话看你喜欢这么写了,比较喜欢的是把push进去的Node作为新的head,然后修改一下self._head为新Node,然后修改新Node的next为老的head,再连接一下Tail和Head便可,这样就省掉一些循环

pop的话就加一些判定好了,首先看Head是不是None,如果是就说明Stack是空的。如果发现Tail和Head都是同一个的话就说明Stack里就一项了,提取完Head之后就设置Stack为空吧。然后先提取Head,然后读取Head后面的那一个Node并且设置为新的Head,然后再连接一下Tail和Head便可

附上代码供参考.

class Node:

    def __init__(self, newData):

        self._data = newData

        self._next = None

    def getData(self):

        return self._data

    def getNext(self):

        return self._next

    def setData(self, newData):

        self._data = newData

    def setNext(self, newNode):

        self._next = newNode

class Stack:

    def __init__(self):

        self._head = None

        self._tail = None

    def push(self, data):

        print 'Push',data,'into stack'

        new = Node(data)

        cur = self._head

        end = self._tail

        if cur is None:

            self._head = new

            new.setNext(new)

            self._tail = new

        else:

            new.setNext(self._head)

            self._head = new

            self._tail.setNext(new)

    def pop(self):

        if self._head is not None:

            cur = self._head

            print 'pop',cur.getData(),'out of stack'

            if cur.getNext() is not cur:

                self._head = cur.getNext()

                self._tail.setNext(self._head)

            else:

                self._head = None

                self._tail = None

        else:

            print 'Stack is empty'

my = Stack()

for i in range(5):

    my.push(i)

for i in range(6):

    my.pop()

堆栈 回文 python

Python没必要用什么堆栈,方法很多,如果非要用可以这样:

import Queue

q = Queue.Queue()

s = 'ecbe'

[q.put(c) for c in s[::-1]]

i = 0

while not q.empty():

    c = q.get()

    if c != s[i]:

        print 'no'

        break

    i+=1

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。