반응형

참고자료

https://jung-story.tistory.com/5?category=826491 

 

자료구조 (Linked list) - 알고리즘 & 자료구조 C언어

개요 자료구조 는 사실 컴퓨터공학을 전공하면 꼭 필요한 과목이라고 생각한다. 자료구조에서 배우는 메모리 관리와 다양한 알고리즘들은 언어에 구애받지 않고 어디에서나 쓰이기 때문이다.

jung-story.tistory.com

https://jung-story.tistory.com/6?category=826491 

 

자료구조 선택정렬, 버블정렬, 삽입정렬

참고자료 https://jung-story.tistory.com/5 자료구조 (Linked list) - 알고리즘 & 자료구조 C언어 개요 자료구조 는 사실 컴퓨터공학을 전공하면 꼭 필요한 과목이라고 생각한다. 자료구조에서 배우는 메모리

jung-story.tistory.com

https://jung-story.tistory.com/8?category=826491 

 

자료구조 병합정렬 , 셸정렬

참고자료 https://jung-story.tistory.com/5?category=826491 자료구조 (Linked list) - 알고리즘 & 자료구조 C언어 개요 자료구조 는 사실 컴퓨터공학을 전공하면 꼭 필요한 과목이라고 생각한다. 자료구조에서..

jung-story.tistory.com

 


개요

이번에는 자료구조 중에서 순차 스택에 대해서 알아보도록 하겠습니다.

 


스택 구조

 

스택(Stack)이란 자료구조는

  • 선입 후출(First In, Last Out: FILO)
  • 후입 선출(Last In, First Out: LIFO)

구조를 가지고 있습니다.

 


활용예시 

 

  • 후입 선출(LIFO)의 특징을 활용하여 여러 분야에서 활용 가능합니다.
  • 웹 브라우저 방문 기록 (뒤로 가기)
  • 실행 취소 (undo)
  • 역순 문자열 만들기
  • 수식의 괄호 검사 (연산자 우선순위 표현을 위한 괄호 검사)
  • 후위 표기법 계산

 


예제

 

이번에는 이러한 스택 알고리즘을 C언어의 배열을 이용한 순차 스택을 구현해 보겠습니다!

 

#define STACK_SIZE 20

#include <stdio.h>
typedef int element;
element stack[STACK_SIZE];	// 스택생성!
int top = -1;	//스택의 위치를 나타내기위한 변수
int isEmpty() {
	if (top == -1) {
		return 1; // true 값
	}
	else {
		return 0; // false 값
	}
}
int isFull() {
	if (top == STACK_SIZE - 1) {
		return 1;	// true 값
	}
	else {
		return 0;	// false 값
	}
}
void push(element data) {
	if (isFull()) {
		printf("stack이 가득 찼습니다\n");
		return;
	}
	else {
		stack[++top] = data;
	}
}
element pop() {g
	if (isEmpty()) {
		printf("stack이 비어있습니다");
		return 0;
	}
	else {
		return stack[top--];
	}
}

void PrintInfo() {
	int i;
	for (i = 0; i <= top; i++) {
		printf("[%d] ,", stack[i]);
	}
	printf("\n");
}

int main() {
	push(1);
	PrintInfo();
	push(2);
	PrintInfo();
	push(3);
	PrintInfo();
	pop();
	PrintInfo();
	pop();
	PrintInfo();

}

 

실행화면

실행화면

 

이렇게 순차 스택에 대해서 알아보았습니다.

 


 

 

반응형

+ Recent posts