스택은 순서가 지정된 항목 모음으로, 새 항목 추가 및 제거는 항상 같은 끝에서 발생합니다. 이 끝을 종종 "상단"이라고 합니다. 상단에 해당하는 끝을 "하단"이라고 합니다.
그림에 설명된 대로 s=(a1,a2,…an-1,an)을 스택합니다. 스택에 마지막으로 푸시된 것은 an이고, 스택에서 처음으로 팝된 것도 an입니다. 따라서 스택은 LIFO 원칙을 준수합니다.
LIFO
LIFO, 즉 후입선출 정렬 원칙입니다. 컬렉션 내의 기간을 기준으로 정렬됩니다. 최신 항목은 위쪽에 있고 오래된 항목은 아래쪽에 있습니다. 스택의 맨 아래에 있는 항목이 가장 오랫동안 저장되므로 스택의 맨 아래가 중요합니다. 최근에 추가된 항목이 가장 먼저 제거됩니다.
스택이 중요한 이유는 아이템의 순서를 뒤집을 수 있다는 점입니다. 삽입과 삭제는 역순입니다.
가장 일반적인 예는 모든 웹 브라우저에 뒤로 버튼이 있다는 것입니다. 웹을 탐색하면 웹 페이지가 스택(실제로는 웹 페이지의 URL)에 배치됩니다. 지금 보고 있는 페이지가 상단에 있고, 처음 본 페이지가 하단에 있습니다. '뒤로' 버튼을 누르면 이전 페이지를 역순으로 탐색하게 됩니다.
Python 구현 스택
# 创建一个空的新栈。 它不需要参数,并返回一个空栈。 class Stack: def __init__(self): self.items = [] # 测试栈是否为空。不需要参数,并返回布尔值。 def isEmpty(self): return self.items == [] # 将一个新项添加到栈的顶部。它需要 item 做参数并不返回任何内容。 def push(self, item): self.items.append(item) # 从栈中删除顶部项。它不需要参数并返回 item 。栈被修改。 def pop(self): return self.items.pop() # 从栈返回顶部项,但不会删除它。不需要参数。 不修改栈。 def peek(self): return self.items[len(self.items)-1] # 返回栈中的 item 数量。不需要参数,并返回一个整数。 def size(self): return len(self.items)
십진수를 임의의 진수로 변환# 🎜🎜 #
스택의 기본 동작을 알고 나면 작은 프로젝트를 만들어 기술을 연습해 보세요. 10진수를 임의의 밑수로 변환합니다. 실제로 가장 높은 숫자는 16진수입니다(더 높은 밑수가 있습니까?).def baseConverter(n, base): # n是输入的十进制数字,base为要转化的进制数 digits = '0123456789ABCDEF' #创建一个新栈 s= Stack() # 将每次计算所得的余数添加进栈 while n> 0: rem = n % base s.push(rem) n = n // base # 将余数倒序排列至新字符串 newString = '' while not remstack.isEmpty(): newString = newString + digits[remstack.pop()] return newString관련 추천: "
위 내용은 파이썬에서 스택은 무엇을 의미하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!