Leetcode225. 스택 큐 구현

제목 설명

다음 스택을 사용하여 큐 구현 :

  • 푸시 (X) - 스택 원소 X
  • ) (팝업 - 상단 요소를 제거
  • 상단 () - 상단의 요소를 가져옵니다
  • ) (빈 - 반환 스택이 비어 있는지

설명 :

  • / 다시 들여다이며, 푸시 앞, 크기에서 팝, 이러한 작업은 합법적으로 비어 - 당신은 기본 큐의 작업을 할 수 있습니다.
  • 당신이 대기열을 지원하지 않을 수 있습니다 사용하는 언어입니다. 당신은 큐, 표준에 대한 작업만큼 큐를 시뮬레이션 할 목록이나 양단 큐 (양단 큐)를 사용할 수 있습니다.
  • 당신은 모든 작업 (예를 들어, 빈 스택에 팝업 작동이나 상단 호출하지 않습니다) 유효하다고 가정 할 수있다.

문제 해결

아날로그와 Linklist 일반적인 기능 (자바)

아이디어 :

메인 키는 일반적으로 사용 LinkedList의 기능, 큐와 스택 기능에 따라 기능의 조합을 지배하는 것이다.
클래스 LinkedList의 포털

주로 세부 사항에 반영 push()당신은 스택에 값을 입력 할 때 밀어해야 할 때마다 :

  1. LinkList 꼬리에 값을 넣어 것입니다
  2. 헤드 노드 (꺼짐 queue.remove()꼬리에)
  3. 사이클의 두번째 단계 ( 队列长度-1) 회
  4. 노드를 수행 한 후 새로 추가 된 노드의 머리가 될 것이다.

이 때마다 새로운 요소 재정렬 스택하기 위해 추가되도록 수행된다. 상단 후 및 팝 poll()peek()헤드 또는 뷰 출력 노드.

class MyStack {
    Queue<Integer> queue;
    
    
    public MyStack() {
        queue = new LinkedList<>();
    }
    
    
    public void push(int x) {
        queue.add(x);
        for(int i = 1; i < queue.size(); i++)
            queue.add(queue.remove());
    }
    
    
    public int pop() {
        return queue.poll();
    }
    
    
    public int top() {
        return queue.peek();
    }
    
    
    public boolean empty() {
        return queue.size() == 0;
    }
}
게시 43 개 원래 기사 · 원의 찬양 (20) · 전망 1454

추천

출처blog.csdn.net/Chen_2018k/article/details/104603419