Stack
スタックのプロパティ
例えば、スタックに1、2、3の順に資料を挿入して取り出し、逆の順である3、2、1の順に取り出すことができる.
スタックの実装
スタックに必要なデータ構造と演算を計画で実施します.
挿入
スタックの挿入削除プロセス
スタックのpushアルゴリズム
def push(item) :
s.append(item)
スタック内のpopアルゴリズム
def pop() :
if len(s) == 0 :
#underflow
return
else :
return s.pop(-1)
def push(item,size) :
global top
top += 1
if top == size :
print('overflow') #push가 너무 크거나, size가 너무 작거나
else :
stack[top] = item
size = 10
stack = [0]*size
top = -1
push(10,size)
top += 1 #push (20)
stack[top] = 20
def push(item,size) :
global top
if top == -1 :
print('underflow') #push가 너무 크거나, size가 너무 작거나
else :
top -=1
return stack[top+1]
print(pop())
if top > -1 :
top -= 1
print(stack[top+1])
class Stack:
def __init__(self, size):
self.size = size
self.top = -1
self.items = [None] *size
def is_empty(self) :
return True if (self.top == -1 ) else False
def is_full(self) :
return True if (self.size == self.top+1) else False
def push(self, data) :
if self.is_full() :
raise Exception('가득참!')
else :
self.top += 1
self.items[self.top] = data
def pop(self) :
if self.is_empty() :
raise Exception('stack is empty')
else :
value = self.items[self.top]
self.items[self.top] = None
self.top -= 1
return value
def peek(self) :
if self.is_empty() :
raise Exception('stack is empty')
else :
value = self.items[self.top]
return value
my_stack = Stack(5)
my_stack.push(1)
my_stack.push(2)
my_stack.pop()
my_stack.push(2)
my_stack.push(3)
print(my_stack)
Reference
この問題について(Stack), 我々は、より多くの情報をここで見つけました https://velog.io/@holawan/Stackテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol