23.2. 프로그램언어 C++에서의 스택과 큐

프로그램언어 C++에서의 스택의 정의와 기본 연산

스택(Stack)에 대한 설명

스택(Stack)은 후입선출(LIFO, Last In First Out) 구조를 가지는 자료구조로, 데이터를 저장하고 접근하는 데 사용됩니다. 스택은 한쪽 끝에서만 데이터의 삽입과 삭제가 이루어지는 구조를 갖고 있습니다.

스택의 기본 연산

  • Push: 스택에 데이터를 삽입하는 연산
  • Pop: 스택에서 데이터를 삭제하고 반환하는 연산
  • Top (또는 Peek): 스택의 맨 위에 있는 데이터를 반환하는 연산
  • isEmpty: 스택이 비어있는지 확인하는 연산

프로그램언어 C++에서의 스택 예제 코드


#include <iostream>
#include <stack>

int main() {
    std::stack<int> myStack;

    // Push 연산
    myStack.push(10);
    myStack.push(20);
    myStack.push(30);

    // Pop 연산
    myStack.pop();

    // Top 연산
    int topElement = myStack.top();
    
    // isEmpty 연산
    if (myStack.empty()) {
        std::cout << "스택이 비어있습니다." << std::endl;
    } else {
        std::cout << "스택이 비어있지 않습니다." << std::endl;
    }

    return 0;
}
    

프로그램언어 C++에서의 큐의 정의와 기본 연산

큐(Queue)는 데이터를 선입선출(FIFO, First-In-First-Out) 방식으로 저장하는 자료구조입니다. C++에서 큐는 표준 라이브러리인 queue 헤더 파일을 사용하여 구현할 수 있습니다. 큐는 주로 데이터를 임시로 저장하거나 작업을 순차적으로 처리할 때 사용됩니다.

큐의 기본 연산은 다음과 같습니다:

  • push: 큐에 데이터를 삽입합니다.
  • pop: 큐에서 데이터를 제거합니다.
  • front: 큐의 맨 앞에 있는 데이터를 반환합니다.
  • back: 큐의 맨 뒤에 있는 데이터를 반환합니다.
  • empty: 큐가 비어있는지 확인합니다.
  • size: 큐에 저장된 데이터의 개수를 반환합니다.

아래는 C++에서 큐를 사용하는 예제 코드입니다:


#include 
#include 

int main() {
    std::queue myQueue;

    // 데이터 삽입
    myQueue.push(10);
    myQueue.push(20);
    myQueue.push(30);

    // 큐의 맨 앞 데이터 확인
    std::cout << "Front of the queue: " << myQueue.front() << std::endl;

    // 큐의 데이터 제거
    myQueue.pop();

    // 큐의 크기 확인
    std::cout << "Size of the queue: " << myQueue.size() << std::endl;

    // 큐가 비어있는지 확인
    if (myQueue.empty()) {
        std::cout << "Queue is empty." << std::endl;
    } else {
        std::cout << "Queue is not empty." << std::endl;
    }

    return 0;
}

프로그램언어 C++의 스택과 큐의 사용 예제

스택과 큐는 C++ 프로그래밍에서 자주 사용되는 자료 구조입니다. 스택은 후입선출(LIFO, Last In First Out) 방식으로 데이터를 저장하고, 큐는 선입선출(FIFO, First In First Out) 방식으로 데이터를 저장합니다.

스택(Stack) 사용 예제:

스택은 push(데이터 추가)와 pop(데이터 제거) 연산을 통해 데이터를 처리합니다. 아래는 C++에서 스택을 사용하는 간단한 예제 코드입니다.


#include <iostream>
#include <stack>

int main() {
    std::stack<int> myStack;

    myStack.push(10);
    myStack.push(20);
    myStack.push(30);

    while (!myStack.empty()) {
        std::cout << myStack.top() << " ";
        myStack.pop();
    }

    return 0;
}
    

큐(Queue) 사용 예제:

큐는 push(데이터 추가)와 pop(데이터 제거) 연산을 통해 데이터를 처리합니다. 아래는 C++에서 큐를 사용하는 간단한 예제 코드입니다.


#include <iostream>
#include <queue>

int main() {
    std::queue<int> myQueue;

    myQueue.push(10);
    myQueue.push(20);
    myQueue.push(30);

    while (!myQueue.empty()) {
        std::cout << myQueue.front() << " ";
        myQueue.pop();
    }

    return 0;
}
    

프로그램언어 C++에서의 스택과 큐의 응용

스택과 큐는 프로그래밍에서 자주 사용되는 자료구조로, C++에서도 많은 응용이 가능합니다.

스택(Stack)의 응용

스택은 후입선출(LIFO, Last In First Out) 구조로 데이터를 저장하고 접근할 수 있는 자료구조입니다. 주요 응용 분야로는 다음과 같은 것들이 있습니다:

  • 함수 호출과 복귀: 함수 호출 시 스택에 현재 상태를 저장하고, 함수가 끝나면 스택에서 상태를 복구합니다.
  • 역추적(backtracking): 스택을 활용하여 이전 상태로 되돌아가는 작업을 수행할 수 있습니다.
  • 수식 평가: 중위 표기법의 수식을 후위 표기법으로 변환하여 스택을 이용해 평가할 수 있습니다.

#include <iostream>
#include <stack>

int main() {
    std::stack<int> s;

    s.push(1);
    s.push(2);
    s.push(3);

    while (!s.empty()) {
        std::cout << s.top() << " ";
        s.pop();
    }

    return 0;
}

큐(Queue)의 응용

큐는 선입선출(FIFO, First In First Out) 구조로 데이터를 저장하고 접근할 수 있는 자료구조입니다. 주요 응용 분야로는 다음과 같은 것들이 있습니다:

  • 작업 대기열: 작업을 순서대로 처리해야 할 때 큐를 사용하여 대기열을 관리할 수 있습니다.
  • 너비 우선 탐색(BFS): 그래프 탐색 알고리즘 중 하나로, 큐를 사용하여 레벨 순서대로 탐색합니다.
  • 캐시 구현: 최근에 사용된 데이터를 먼저 꺼내기 위해 큐를 사용하는 캐시를 구현할 수 있습니다.

#include <iostream>
#include <queue>

int main() {
    std::queue<int> q;

    q.push(1);
    q.push(2);
    q.push(3);

    while (!q.empty()) {
        std::cout << q.front() << " ";
        q.pop();
    }

    return 0;
}

프로그램언어 C++에서의 스택과 큐의 차이

스택(Stack)과 큐(Queue)는 프로그래밍에서 데이터를 저장하고 관리하는 데 사용되는 자료구조입니다.

스택은 후입선출(Last In, First Out) 구조로, 가장 최근에 추가된 항목이 가장 먼저 제거되는 자료구조입니다. 스택은 한쪽 끝에서만 데이터를 추가하거나 제거할 수 있습니다.

큐는 선입선출(First In, First Out) 구조로, 가장 먼저 추가된 항목이 가장 먼저 제거되는 자료구조입니다. 큐는 데이터를 추가하는 곳과 제거하는 곳이 각각 다른 위치에 있습니다.

아래는 C++에서의 스택과 큐의 간단한 예제 코드입니다.

스택 예제 코드:


#include <iostream>
#include <stack>

int main() {
    std::stack<int> s;

    s.push(1);
    s.push(2);
    s.push(3);

    while (!s.empty()) {
        std::cout << s.top() << " ";
        s.pop();
    }

    return 0;
}
    

큐 예제 코드:


#include <iostream>
#include <queue>

int main() {
    std::queue<int> q;

    q.push(1);
    q.push(2);
    q.push(3);

    while (!q.empty()) {
        std::cout << q.front() << " ";
        q.pop();
    }

    return 0;
}
    

Leave a Comment