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

파이썬에서 앞, 중간, 뒤에서 푸시 또는 팝할 수 있는 큐를 구현하는 프로그램

<시간/>

앞, 중간, 뒤에서 값을 푸시하고 팝할 수 있는 큐를 구현하라는 요청을 받았다고 가정해 보겠습니다.

세 가지 경우 모두에 대해 푸시 및 팝업 기능을 구현해야 합니다. 주어진 시간에 전체 대기열을 표시하는 다른 기능을 구현해야 합니다.

따라서 입력이 다음과 같으면

push_from_back(10)

push_from_back(20)

push_from_front(30)

push_from_middle(40)

push_from_front(50)

show_queue()

pop_from_back()

show_queue()

pop_from_front()

show_queue()

pop_from_middle()

show_queue(),

그러면 출력은 [50, 30, 40, 10, 20

이 됩니다.

[50, 30, 40, 10]

[30, 40, 10]

[30, 10]

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • array :=큐의 배열 표현

  • push_from_front() 함수를 정의합니다. 가치가 있을 것입니다

    • 위치 0의 배열에 값 삽입

  • push_from_middle() 함수를 정의합니다. 가치가 있을 것입니다

    • 배열의 위치(배열 크기) / 2에 값 삽입

  • push_from_back() 함수를 정의합니다. 가치가 있을 것입니다

    • 배열 끝에 값 삽입

  • pop_from_front() 함수를 정의합니다.

    • 비어 있지 않은 경우 배열에서 첫 번째 요소를 삭제하고 반환합니다.

  • pop_from_middle() 함수를 정의합니다.

    • (배열의 길이 - 1) /2 위치에 있는 요소를 삭제하고 반환

  • pop_from_back() 함수를 정의합니다.

    • 배열에서 마지막 요소를 삭제하고 반환

  • show_queue() 함수를 정의합니다. 입력이 필요하지 않습니다.

    • 반환 배열

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

class Solution():def __init__(self):self.array =[] def push_from_front(self, value):self.array.insert(0, value) def push_from_middle(self, value):self.array. insert(len(self.array) // 2, 값) def push_from_back(self, value):self.array.append(value) def pop_from_front(self):return (self.array 또는 [-1]).pop( 0) def pop_from_middle(self):return (self.array 또는 [-1]).pop((len(self.array) - 1) // 2) def pop_from_back(self):return (self.array 또는 [- 1]).pop() def show_queue(self):return self.arrayob =Solution()ob.push_from_back(10)ob.push_from_back(20)ob.push_from_front(30)ob.push_from_middle(40)ob.push_from_front(50) )print(ob.show_queue())ob.pop_from_back()print(ob.show_queue())ob.pop_from_front()print(ob.show_queue())ob.pop_from_middle()print(ob.show_queue()) 

입력

ob =Solution()ob.push_from_back(10)ob.push_from_back(20)ob.push_from_front(30)ob.push_from_middle(40)ob.push_from_front(50)print(ob.show_queue())ob.pop_from_back( )print(ob.show_queue())ob.pop_from_front()print(ob.show_queue())ob.pop_from_middle()print(ob.show_queue())

출력

[50, 30, 40, 10, 20][50, 30, 40, 10][30, 40, 10][30, 10]