pythonデータ構造のスタック
17476 ワード
紹介する
リストメソッドにより、リストはスタックとして便利に使用でき、スタックは特定のデータ構造として、最初に入った要素の最後の要素が解放されます(後進先出).append()メソッドでスタックトップに要素を追加できます.インデックスを指定しないpop()メソッドで、スタックの上部から要素を解放できます.
スタッククラスを2つカプセル化
リストメソッドにより、リストはスタックとして便利に使用でき、スタックは特定のデータ構造として、最初に入った要素の最後の要素が解放されます(後進先出).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