일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 계단함수
- 코드엔진
- openCV
- tcp
- 네트워크
- 자바스크립트
- 크레인 인형뽑기
- 소프트맥스 함수
- Old-17
- 5585
- old-1
- C언어
- 딥러닝
- 10809
- JS
- 백준
- c언어 게임
- 신규 아이디 추천
- boj
- webhacking.kr
- 리버싱
- 퍼셉트론
- 코딩테스트 연습
- 웹케이알
- Old-14
- 웹해킹
- 자바
- 프로그래머스
- c++
- 게임 프로그래밍
Archives
- Today
- Total
SteffenLee
[C언어]자료구조-스택(Stack) 본문
오늘은 스택(Stack)에 대해 알아보겠습니다.
스택은 후입선출 방식의 자료구조입니다.
쉽게 생각하면 책더미를 생각하면 됩니다.
이 스택을 두가지 방식으로 구현할 수 있는데
1. 배열 이용
2. 연결리스트 이용
이 중에서도 저는 배열로 스택을 구현해봤습니다.
제가 구현한 함수는
iS_empty() : 스택이 비어있나를 확인
is_full() : 스택이 꽉 차있나를 확인
push() : 데이터 삽입
pop : 데이터 삭제
코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include <stdio.h> #define MAX_STACK_SIZE 100 typedef int element; element stack[MAX_STACK_SIZE]; int top = -1; // 공백 상태 검출 함수 int is_empty() { return top == -1 ? true : false; } // 포화 상태 검출 함수 int is_full() { return top + 1 == MAX_STACK_SIZE ? true : false; } // 삽입 함수 void push(element item) { if (top >= MAX_STACK_SIZE - 1){ printf("stack overflow!"); return ; } stack[++top] = item; return; } // 삭제 함수 element pop() { if (top < 0){ printf("에러!"); return -1; } return stack[top--]; } // 주 함수 void main() { push(1); push(2); push(3); printf("pop!: %d\n", pop()); printf("pop!: %d\n", pop()); printf("pop!: %d\n", pop()); } | cs |
감사합니다.
'Progamming > C,C++' 카테고리의 다른 글
[C++]STL vector (0) | 2018.04.07 |
---|---|
[C/C++]동적할당 연결리스트 (0) | 2018.04.05 |
[C++]decltype 타입 지정자 (0) | 2018.03.11 |
[C언어]게임 만들기 - 숫자야구.ver2(2인용) (1) | 2017.10.11 |
[C언어]게임 만들기 - 행맨[Hang Man](텍스트 기반) (5) | 2017.09.23 |
Comments