Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 불변 연결 목록을 역순으로 인쇄


불변의 연결 목록이 있다고 가정하고 다음 인터페이스를 사용하여 각 노드의 모든 값을 역으로 출력해야 합니다. -

  • ImmutableListNode - 이것은 변경할 수 없는 연결 목록의 인터페이스이며 목록의 머리 부분이 지정됩니다.

연결 목록에 액세스하려면 다음 함수를 사용해야 합니다. -

  • ImmutableListNode.printValue() - 현재 노드의 값을 출력합니다.

  • ImmutableListNode.getNext() - 다음 노드를 반환합니다.

따라서 목록이 [0, -4, -1, 3, -5]와 같으면 출력은 [-5, 3, -1, -4, 0]

이 됩니다.

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

  • ImmutableListNode 유형 노드에 대한 스택 st 정의

  • 머리가 null이 아닌 동안

    • 머리를 st에 삽입

    • head :=머리 다음

  • st가 비어 있지 않은 동안

    • 스택 맨 위 노드의 값을 인쇄합니다.

    • 스택에서 노드 삭제

예시(C++)

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

class Solution {
public:
   void printLinkedListInReverse(ImmutableListNode* head) {
      stack <ImmutableListNode*> st;
      while(head){
         st.push(head);
         head = head->getNext();
      }
      while(!st.empty()){
         st.top()->printValue();
         st.pop();
      }
   }
};

입력

[0,-4,-1,3,-5]

출력

[-5,3,-1,-4,0]