본문 바로가기

알고리즘

stack

자료구조 stack은 LIFO구조의 자료구조이다.  (LIFO : 마지막에 들어온값이 가장 먼저 나간다.)

출처 : 알고리즘] 2.1. 자료구조 : 스택(Stack) 이해하기 (tistory.com)

 

 

Code

#include <stdio.h>
#define DATALENGTH 10 // 배열의 길이 
int data[DATALENGTH] = {0, };
int curIdx = 0; // push 기준 현재 값을 넣을 위치

void push(int arr[], int data);
void pop(int arr[]);
void peek(int arr[]); 



int main() {
	for (int i = 0; i < DATALENGTH + 10; i++) {
		push(data, (i + 10) * 10);
	}

	peek(data);

	printf("\n");
	for (int i = 0; i < DATALENGTH + 10; i++) {
		pop(data);
	}

	peek(data);

	return 0;
}

void push(int arr[], int data) {
	if (curIdx < DATALENGTH) { // 배열의 길이 안이니?
		arr[curIdx] = data; // 값 넣기
		printf("넣은 값 : %d \n", arr[curIdx++]);
	}
	else {
		printf("배열의 공간이 부족합니다.\n");
	}
}

void pop(int arr[]) {
	if ((curIdx - 1) < 0) { // pop할 것이 없으면 실행
		printf("pop불가능\n");
		return;
	}
	printf("초기화 해야할 값 : %d \n", arr[--curIdx]);
	arr[curIdx] = 0;

}

void peek(int arr[]) {
	printf("\n 현재 원소들 출력 : [ ");
	for (int i = 0; i < DATALENGTH; i++) {
		printf("%d ", arr[i]);
	}
	printf("]\n");
}

 

실행결과

더보기

넣은 값 : 100
넣은 값 : 110
넣은 값 : 120
넣은 값 : 130
넣은 값 : 140
넣은 값 : 150
넣은 값 : 160
넣은 값 : 170
넣은 값 : 180
넣은 값 : 190
배열의 공간이 부족합니다.
배열의 공간이 부족합니다.
배열의 공간이 부족합니다.
배열의 공간이 부족합니다.
배열의 공간이 부족합니다.
배열의 공간이 부족합니다.
배열의 공간이 부족합니다.
배열의 공간이 부족합니다.
배열의 공간이 부족합니다.
배열의 공간이 부족합니다.

 현재 원소들 출력 : [ 100 110 120 130 140 150 160 170 180 190 ]

초기화 해야할 값 : 190
초기화 해야할 값 : 180
초기화 해야할 값 : 170
초기화 해야할 값 : 160
초기화 해야할 값 : 150
초기화 해야할 값 : 140
초기화 해야할 값 : 130
초기화 해야할 값 : 120
초기화 해야할 값 : 110
초기화 해야할 값 : 100
pop불가능
pop불가능
pop불가능
pop불가능
pop불가능
pop불가능
pop불가능
pop불가능
pop불가능
pop불가능

 현재 원소들 출력 : [ 0 0 0 0 0 0 0 0 0 0 ]

 

'알고리즘' 카테고리의 다른 글

연결리스트  (0) 2023.05.17
원형 큐  (0) 2023.05.03
quick sort  (0) 2023.04.20
삽입 정렬 알고리즘  (0) 2023.04.12
선택 정렬 알고리즘  (0) 2023.04.11