빈칸 채우기로 익히는
C++ 스택과 버블 정렬
각 빈칸에 들어갈 코드를 단답형으로 입력한 뒤 채점 버튼을 눌러보세요. 실제 코딩테스트 문제는 아래 예제보다 어렵게 나올 수 있습니다.
문제 1
C++ 클래스로 배열 기반 스택 구현
문제 2
오름차순 버블 정렬 구현
문제 1. 클래스 스택 구현
동적 배열을 사용하는 스택 클래스입니다. 생성자, 자동 확장, 소멸자의 핵심 부분을 채워보세요.
힌트: 공간이 꽉 차면 기본 크기의 1.5배만큼 더 큰 메모리를 새로 확보하고, 기존 값을 복사한 뒤 이전 메모리를 해제합니다.
#include <iostream>
#include <cstdlib>
using namespace std;
class Stack {
private:
int* data;
int topIndex;
int capacity;
public:
Stack(int size = 10) {
capacity = size;
topIndex = ;
data = (int*)malloc(sizeof(int) * );
}
~Stack() {
}
void push(int value) {
if (topIndex + 1 == capacity) {
int newCapacity = capacity + capacity / 2;
int* newData = (int*)malloc(sizeof(int) * newCapacity);
for (int i = 0; i < capacity; i++) {
newData[i] = data[i];
}
data = newData;
capacity = ;
}
data[] = value;
}
int pop() {
if (topIndex == -1) {
cout << "Stack Underflow" << '\n';
return -1;
}
return data[];
}
};
문제 2. 버블 정렬 구현
오름차순으로 정렬되도록 반복문 조건과 swap 부분을 채워보세요.
힌트: 큰 값이 뒤로 밀려나므로, 안쪽 반복문은 아직 정렬되지 않은 범위까지만 보면 됩니다.
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < ; j++) {
if (arr[j] > arr[]) {
int temp = arr[j];
arr[j] = arr[];
arr[j + 1] = temp;
}
}
}
}