Python 데이터 구조: 스 택 과 대기 열
11982 단어 데이터 구조
스 택 이라는 데이터 구조 에서 데이터 의 접근 은 '선진 후 출' 원칙 에 따른다.생활 에서 가장 흔히 볼 수 있 는 예 는 서랍 을 여 는 것 이다. 만약 에 서랍 이 한 줄 씩 열 려 있다 면 우 리 는 아래 에서 위로 서랍 을 열 고 위 에서 아래로 닫 을 것 이다. '먼저 들 어간 후에 나 와' 먼저 열 린 서랍 은 마지막 에 닫 을 것 이다.그리고 예 를 들 어 사람과 장 기 를 두 면 자신 이 잘못 두 었 다 는 것 을 알 게 되 고 바둑 을 뉘 우 쳐 야 하 며 실행 하 는 것 도 스 택 작업 이다.스 택 에는 두 가지 흔히 볼 수 있 는 실현 방식 이 있 습 니 다. 목록 과 링크 입 니 다.
목록 으로 스 택 구현
top 에서 창고 의 최상 위 요 소 를 지정 합 니 다.데 이 터 를 눌 러 넣 을 때마다 top + 1 데이터 가 튀 어 나 올 때마다 top - = 1
top=-1
STACK=[None]*10
def push(STACK,top,value)
if top==9:
print(' ')
else:
top+=1
SATCK[top]=value
return SATCK,top
def pop(STACK,top):
if top==-1:
print(' ')
else:
p=SATCK[top]
top-=1
return SATCK,top,p
링크 로 스 택 실현
top 은 스 택 상단 을 가리 키 고 데 이 터 를 눌 렀 을 때 새로운 데 이 터 는 top 을 가리 키 며 top 은 새로운 데 이 터 를 가리 키 고 있 습 니 다.데이터 팝 업 시 top = top. next
class Node:
def __init__(self):
self.value=0
self.next=None
head=Node()
top=head
def push(top,value):
newnode=Node()
newnode.value=value
newnode.next=top
top=newnode
return top
def pop(top):
p=None
if top==None:
print(' ')
else:
p=top.value
top=top.next
return top,p
더 자세 한 설명 과 코드 는 여 기 를 클릭 하 세 요.
대열
대열 은 창고 와 달리 선진 적 인 특징 을 가지 고 있다.우리 가 줄 을 서서 물건 을 사 는 것 처럼 먼저 줄 을 서 는 사람 이 먼저 돈 을 낸다.대기 열 역시 두 가지 실현 방식 이 있 습 니 다. 목록 과 링크 입 니 다.
목록 으로 대기 열 구현
프론트 와 rear 로 각각 대기 열의 머리 와 끝 을 지정 해 야 합 니 다.데 이 터 를 눌 렀 을 때 rear + 1 이 데 이 터 를 꺼 낼 때 front + 1
front=-1
rear=-1
queue=[None]*10
def push(queue,rear,value):
if rear==9:
print(' ')
else:
rear+=1
queue[rear]=value
return queue,rear
def pop(queue,front,rear):
p=None
if front==rear:
print(' ')
else:
p=queue[front]
front+=1
return queue,front,p
링크 로 대기 열 을 실현 하 다.
데 이 터 를 추가 할 때 front 가 존재 하 는 지 여 부 를 판단 하고 존재 하지 않 으 면 새 대기 열 을 만들어 야 합 니 다. 존재 하면 rear. next 를 새 데 이 터 를 가리 키 고 rear 를 새 데 이 터 를 가리 킵 니 다.데 이 터 를 꺼 낼 때 front 가 존재 하 는 지 여 부 를 판단 하고 존재 하면 front 를 front. next 로 가리 킵 니 다.
class Node:
def __init__(self):
self.value = 0
self.next=None
rear=None
front=None
def push(value,front,rear):
newnode=Node()
newnode.value=value
if front==None:
print(' ')
rear=newnode
front=newnode
else:
rear.next=newnode
rear=newnode
return front,rear
def pop(front):
if front=None:
print(' ')
else:
p=front.value
front=front.next
return p,front
더 자세 한 설명 과 코드 는 여 기 를 클릭 하 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.