pythonデータ構造のスタック

17476 ワード

紹介する
リストメソッドにより、リストはスタックとして便利に使用でき、スタックは特定のデータ構造として、最初に入った要素の最後の要素が解放されます(後進先出).append()メソッドでスタックトップに要素を追加できます.インデックスを指定しないpop()メソッドで、スタックの上部から要素を解放できます.
 
スタッククラスを2つカプセル化# classPyStack: def __init__(self,size =20): self.stack =[] self.size = size self.top =-1 def setsize(self,size): self.size = size def push(self,element): if self.isFull(): raiseStackException('PyStackOverflow') else: element = self.stack.append(element) self.top = self.top +1 def pop(self): if self.isEmpty(): raiseStackException('PyStackUnderflow') else: element = self.stack[-1] self.top = self.top -1 del self.stack[-1] return element defTop(self): return self.top def empty(self): self.stack =[] self.top =-1 def isEmpty(self): if self.top ==-1: returnTrue else: returnFalse def isFull(self): if self.top == self.size -1: returnTrue else: returnFalse
  • classStackException(Exception):
  • def __init__(self,data): self.data = data def __str__(self): return self.data
  • if __name__ =='__main__':
  • stack =PyStack() for i in range(10): stack.push(i) print(stack.Top()) for i in range(10): print(stack.pop()) stack.empty() for i in range(21): stack.push(i)#
     
    9
    9
    8
    7
    6
    5
    4
    3
    2
    1
    0
    Traceback (most recent call last):
      File "E:\python\work\PyStack.py", line 54, in
        stack.push(i)               #
      File "E:\python\work\PyStack.py", line 11, in push
        raise StackException('PyStackOverflow')
    StackException: PyStackOverflow