이 기사에서는 Python 3.x의 스택 및 큐 구조에 대해 배웁니다. 또는 더 일찍. 여기서 우리는 이러한 데이터 구조 내에서의 작업 및 수정에 대해 논의할 것입니다 -
여기에는 -
가 포함됩니다.- 삽입 작업(푸시, 대기열에 추가)
- 삭제 작업(팝, 대기열에서 빼기)
- 디스플레이/횡단 작업
전제조건 :목록 및 목록 작업
관련 데이터 구조 :목록 조작
관련 이미지
스택
스택에서 객체는 서로 겹쳐서 저장되고 이러한 객체는 도착의 역순으로 제거됩니다. 즉, 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에서 스택 및 큐 데이터 구조를 구현하는 방법을 배웠습니다. 또는 더 일찍. 동일한 알고리즘을 구현하여 다른 프로그래밍 언어로 스택/대기열 감지기 프로그램을 구현할 수 있습니다.