[c++] 배열과 포인터를 사용한 데이터 구조 구현
이번에는 C++을 사용하여 배열과 포인터를 활용하여 간단한 데이터 구조를 구현하는 방법에 대해 알아보겠습니다.
배열을 사용한 데이터 구조 구현
배열은 동일한 자료형의 요소들을 연속적으로 저장하는 데 사용됩니다. 예를 들어, 정수형 배열을 선언하고 값을 할당하는 방법은 다음과 같습니다.
int arr[5]; // 길이가 5인 정수형 배열 선언
arr[0] = 1; // 첫 번째 요소에 값 할당
arr[1] = 2; // 두 번째 요소에 값 할당
// 나머지 요소에 값 할당
포인터를 사용한 데이터 구조 구현
포인터는 다른 변수의 메모리 주소를 저장하는 변수로, 동적 메모리 할당 및 배열과 연관된 작업에 사용됩니다. 예를 들어, 정수형 포인터를 사용하여 배열을 동적으로 할당하는 방법은 다음과 같습니다.
int* ptr; // 정수형 포인터 선언
int size = 5; // 배열 길이
ptr = new int[size]; // 메모리 동적 할당
ptr[0] = 1; // 첫 번째 요소에 값 할당
ptr[1] = 2; // 두 번째 요소에 값 할당
// 나머지 요소에 값 할당
데이터 구조 구현 예제
아래는 배열과 포인터를 사용하여 간단한 스택(Stack) 구조를 구현하는 예제 코드입니다.
#include <iostream>
using namespace std;
class Stack {
private:
int* arr; // 배열을 나타내는 포인터
int size; // 스택 크기
int top; // 스택의 맨 위 요소의 인덱스
public:
Stack(int s) {
size = s;
arr = new int[size]; // 배열 동적 할당
top = -1; // 초기화
}
void push(int value) {
arr[++top] = value; // 요소 추가
}
int pop() {
return arr[top--]; // 요소 제거 및 반환
}
};
int main() {
Stack stack(5); // 크기가 5인 스택 생성
stack.push(1);
stack.push(2);
cout << stack.pop() << endl; // 스택에서 요소 제거 및 출력
return 0;
}
이를 통해 배열과 포인터를 사용하여 데이터 구조를 간단히 구현하는 방법에 대해 알아보았습니다. 이러한 구현 방식은 메모리를 효율적으로 활용하고, 동적으로 크기가 변할 수 있는 데이터 구조를 만드는 데 유용합니다.
참고문헌:
- https://www.geeksforgeeks.org/data-structures/
- https://en.cppreference.com/w/cpp/language/pointer