728x90

자료구조에는 크게 선형구조와 비선형구조로 나누어지고

 

그중에서 선형구조에서의 스택(Stack)에 대해 알아보겠습니다.

 

<지난 글>

ititit1.tistory.com/75

 

[ 자료구조 ] 자료구조의 기초 선형 구조와 수식 계산

1.자료구조란? 자료구조(資料構造, 영어: data structure)는 전산학에서 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법이다. 신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사

ititit1.tistory.com

 

 

스택(Stack)란? 

 

자료구조의 매우 기초적인 개념인 Stack이란 영어로 쌓아놓은 더미란 뜻입니다.

 

LIFO(Last In First Out) 방식으로 가장 최근에 들어온 데이터가 가장 먼저 나가게 됩니다.

 

 

스택은 push를통해 값을 넣어주고 pop을 통해 데이터를 꺼내옵니다.

 

push를 할경우 top은 처음에 -1로 초기화하며 전위연산을 통해  Stack[++top] 즉 인덱스를 1더한다음 그 인덱스에 값을 넣어줍니다 

 

pop은 값을 반환하는 함수인데  Stack[pop--] 값을 꺼내온다음 pop-- 후위연산을 통해 인덱스를 1뺴줍니다.

 

이렇게할경우 stack 의 가장 위에있는값 Stack[pop] 즉 pop는 유동적으로 변합니다.

 

 

<소스코드>

 

#include <stdio.h>
#define MAX_STACK_SIZE 100
/*
2020-11-26 JinSol Stack
가장 최근에 들어온 데이터가 가장먼저 나감 
*/

int stack[MAX_STACK_SIZE];
int top = -1;
int bottom = 0;

//스택이 비어있는지 확인
int IsEmpty(){
	if(top<0)
		return (true);
	else
		return (false);
}
//스택이 가득차있는지 확인
int IsFull(){
	if(top >= MAX_STACK_SIZE-1)
		return (true);
	else
		return (false);
}

//스택에 값을 넣어줌
void push(int value){
	if(IsFull() == true)
		printf("스택이 가득차있음\n");
	else
		stack[++top] = value;
}
//스택에서 값을 빼옴 
int	pop(){
	if(IsEmpty() == true )
		printf("스택이 비어있음\n");
	else
		return (stack[top--]);
}
int	main(void){
	
	push(5);
	push(12);
	push(-5);
	push(0);
	push(1);
	
	printf("%d \n",pop());
	printf("%d \n",pop());
	printf("%d \n",pop());
	printf("%d \n",pop());
	printf("%d \n",pop());
	return (0);
}

 

<실행결과>

 

 

 

728x90

+ Recent posts