Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 목록을 스택 및 대기열로 사용

<시간/>

이 기사에서는 Python 3.x의 스택 및 큐 구조에 대해 배웁니다. 또는 더 일찍. 여기서 우리는 이러한 데이터 구조 내에서의 작업 및 수정에 대해 논의할 것입니다 -

여기에는 -

가 포함됩니다.
  1. 삽입 작업(푸시, 대기열에 추가)
  2. 삭제 작업(팝, 대기열에서 빼기)
  3. 디스플레이/횡단 작업

전제조건 :목록 및 목록 작업

관련 데이터 구조 :목록 조작

관련 이미지

Python에서 목록을 스택 및 대기열로 사용

스택

스택에서 객체는 서로 겹쳐서 저장되고 이러한 객체는 도착의 역순으로 제거됩니다. 즉, LIFO 개념을 따릅니다. LIFO는 스택 데이터 구조에서 후입선출(Last in First Out) 형식의 배열을 따른다는 의미입니다.

스택 작업 -

  • 요소 추가/추가:추가된 항목 수만큼 스택 크기가 증가하며 추가는 상단, 즉 스택 상단에서 발생합니다.
  • 요소 삭제/제거 - 여기에는 두 가지 조건이 포함됩니다. - 스택이 비어 있으면 삭제할 수 있는 요소가 없습니다. 즉, 스택에서 언더플로가 발생하거나 스택에 특정 요소가 있으면 맨 위에 있는 요소가 제거됩니다. . 이렇게 하면 제거된 요소 수만큼 스택 크기가 줄어듭니다.
  • Traversing /Displaying - 스택의 각 요소를 방문하여 화면에 표시합니다.

peek의 추가 기능을 삽입할 수도 있습니다. 즉, 스택 맨 위에서 값을 검색하는 것입니다.

스택의 특성

  • 게재 순서가 유지됩니다.
  • 스택에서 중복이 허용됩니다.
  • 유사한 데이터 유형 스토리지.
  • 파싱 작업에 매우 유용합니다.

예시 코드

def isEmpty(stk): # checks whether the stack is empty or not
   if stk==[]:
      return True
   else:
      return False

def Push(stk,item): # Allow additions to the stack
   stk.append(item)
   top=len(stk)-1

def Pop(stk):
   if isEmpty(stk): # verifies whether the stack is empty or not
      print("Underflow")
   else: # Allow deletions from the stack
      item=stk.pop()
      if len(stk)==0:
         top=None
      else:
         top=len(stk)
         print("Popped item is "+str(item))

def Display(stk):
   if isEmpty(stk):
      print("Stack is empty")
   else:
      top=len(stk)-1
      print("Elements in the stack are: ")
      for i in range(top,-1,-1):
         print (str(stk[i]))

# executable code
if __name__ == "__main__":
   stk=[]
   top=None
   Push(stk,1)
   Push(stk,2)
   Push(stk,3)
   Push(stk,4)
   Pop(stk)
   Display(stk)

위의 코드는 Python 3.x에서 스택 기능을 구현합니다. 또는 이전. 여러 if-else 문을 사용하여 사용자에게 선택 항목을 제공하여 메뉴 기반 프로그램을 만들 수 있습니다. 스택 프레임의 개념은 두 경우 모두 동일하게 유지됩니다.

아래의 화면은 위의 프로그램에서 생성된 출력을 보여줍니다. 사용자 기반 입력 시스템을 위해 input() 함수를 사용할 수도 있습니다(여기서 정적 입력을 구현했습니다)

출력

Popped item is 4
Elements in the stack are:
3
2
1

대기열

스택에서 객체는 차례로 저장되고 이러한 객체는 도착 순서대로 제거됩니다. 즉, FIFO 개념을 따릅니다. FIFO는 Queue 데이터 구조에서 First in First Out 형식의 배열을 따른다는 의미입니다.

대기열 작업

  • 요소 추가/추가 - 추가된 항목 수만큼 대기열 크기가 증가하며 추가는 대기열의 뒤쪽, 즉 뒤쪽 끝에서 발생합니다.

  • 요소의 삭제/제거 - 여기에는 두 가지 조건이 포함됩니다. - 대기열이 비어 있는 경우 삭제할 수 있는 요소가 없습니다. 즉, 대기열에서 언더플로가 발생하거나 대기열에 특정 요소가 있는 경우 전면에 있는 요소가 제거됩니다. 이렇게 하면 제거된 요소 수만큼 스택 크기가 줄어듭니다.

  • Traversing /Displaying - 이것은 스택의 각 요소를 방문하고 화면에 표시하는 것을 포함합니다.

peek의 추가 기능을 삽입할 수도 있습니다. 즉, 대기열의 백/끝에서 값을 검색하는 것입니다.

대기열의 특성

  • 게재 순서가 유지됩니다.
  • 대기열에서 중복이 허용됩니다.
  • 유사한 데이터 유형 스토리지.
  • CPU 작업 작업 구문 분석에 매우 유용합니다.

예시 코드

#Adding elements to queue at the rear end
def enqueue(data):
   queue.insert(0,data)

#Removing the front element from the queue
def dequeue():
   if len(queue)>0:
      return queue.pop()
   return ("Queue Empty!")

#To display the elements of the queue
def display():
   print("Elements on queue are:");
   for i in range(len(queue)):
      print(queue[i])

# executable code
if __name__=="__main__":
   queue=[]
   enqueue(5)
   enqueue(6)
   enqueue(9)
   enqueue(5)
   enqueue(3)
   print("Popped Element is: "+str(dequeue()))
   display()

위의 코드는 Python 3.x에서 Queue 기능을 구현합니다. 또는 이전. 여러 if-else 문을 사용하여 사용자에게 선택 사항을 제공하여 메뉴 기반 프로그램을 만들 수 있습니다. 대기열을 구성하는 개념은 두 경우 모두 동일하게 유지됩니다.

아래 표시된 화면은 위의 프로그램에서 생성된 출력을 나타냅니다. 사용자 기반 입력 시스템에 대해 input() 함수를 사용할 수도 있습니다(여기서 정적 입력을 구현했습니다)

출력

Popped item is: 5
Elements on queue are:
3
5
9
6

결론

이 기사에서는 Python 3.x에서 스택 및 큐 데이터 구조를 구현하는 방법을 배웠습니다. 또는 더 일찍. 동일한 알고리즘을 구현하여 다른 프로그래밍 언어로 스택/대기열 감지기 프로그램을 구현할 수 있습니다.