조회 수 585 추천 수 2 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
자료의 모든 삽입과 삭제가 한쪽에서만 일어나는 형태.

[ 특징 ]
삽입과 삭제가 일어나는 곳을 TOP이라고 한다.
자료를 스택에 넣는 행위를 PUSH라고 한다.
스택에서 자료를 꺼내는 것을 POP이라고 한다.
스택과 같은 자료구조를 LIFO(LIST-IN FIRST-OUT)이라고 한다.
시스템 내부의 함수의 호출시에 주소나 상태를 임시로 저장할 경우 산술식 계산등에 활용한다.

[ 개념도 ]



[ 예제소스 ]
#include
#include

int stack[10]; 스택은 여기선 배열입니다.
int top;

void init_stack()
{
top = -1;
}

TOP을 지하1층(?)으로 깔아서 초기화시키는 역활을 합니다.

void push( int val1 )
{
if( top >= 9 )
printf("n######## 스택이 꽉 차버렸네요 ########n");
else
stack[++top] = val1;
}

아직 여유공간이 있는 경우엔 입력받은 값를 인수로 받아 스택(배열)에 입력시키는 역활을 하는 함수입니다. ++top이기에 TOP을 한층 올린 뒤, 그 위치에 입력받은 값을 집어넣습니다.

void pop()
{
if( top < 0 )
printf(" ########## 더이상 비울 스택이 없습니다 ###########n");
else
--top;
}

TOP을 한칸 내리면 ( --top; ) 가장 위에 있던 자료는 무용지물이 되는 것이죠. 다음에 PUSH를 하더라도 덮어버리기 때문에 삭제라고 보셔도 무방합니다. 위의 개념도에서 3번째 그림을 보시면 한칸 내려와 있는 TOP을 보실 수 있습니다.


void print_stack()
{
int i;
printf("스택 top --------------------- buttomn");

for( i = top ; i >= 0 ; i-- )
printf("%d ", stack[i] );
printf("n");
}

지금까지 쌓인 스택들을 출력하는 함수입니다. 바닥부터 차곡차곡 순서대로 출력됩니다.


void main()
{
printf(" 배열을 이용한 스택 프로그램 입니다 n");
int select_num;
int push_num;
int exit_flag = 0;

init_stack();

while( 1 )
{

printf(" 1) push 2) pop 3) data print 4) Quit! n" );
printf(" 숫자를 선택해주세요 : "); scanf("%d", &select_num );

if( select_num > 3 )
break;
else{
switch( select_num )
{
case 1 :
printf("푸쉬 숫자를 입력해주세요 => "); scanf("%d", &push_num );
push( push_num );
printf("푸쉬(push)를 실행 했습니다n");
break;
case 2 :
pop();
printf("팝(pop)을 실행 했습니다n");
break;

case 3 :
print_stack();
break;
}
}
}
printf("프로그램을 종료합니다n");
getch();
}

엔진입니다.



[예제프로그램]◁다른이름으로 저장하세요 ㅡ_ㅡ;
?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
701 언어/기타 [마지막 3명 모집] [취업연계무료교육] VR/AR 게임 콘텐츠 전문가 양성 과정 교육생 모집 file 황금상자 2017.07.14 702
700 언어/기타 JSON parser 변환데이터 저장시 생기는 Object Too Deep 해결하기 title: 댓글러lklslel 2016.12.24 851
699 언어/기타 앙뜨프리너십에서 해커톤 부트캠프 모집중이네요 file 마나님이 2016.11.08 908
698 언어/기타 게임의 버전을 짜 보자! - 유의적 버전 2.0.0 Yanggaeng 2016.06.07 1123
697 언어/기타 RPG게임 뻔한요소들. 8 title: 천무천무 2015.10.05 1644
696 언어/기타 자바스크립트와 관련해서 참고할 만한 사이트들 3 MARCO 2015.10.04 921
695 언어/기타 꿀잼이군요! 3 사람님[대회참가] 2015.05.20 873
694 언어/기타 [강의링크] 대비법칙-색상대비-밀당의 재미 약한 반대색 설계 title: 천무천무 2015.04.02 636
693 언어/기타 오다 주웠습니다. 9 사람님[대회참가] 2015.03.30 917
692 언어/기타 무료 이미지 사이트 Pixabay! 9 file 나작소 2015.03.28 909
691 언어/기타 페인터(코럴) 브러쉬 세팅 공유 :) 8 file 샤이귤군 2015.03.28 1577
690 언어/기타 유화재료 & 기법 살짝 팁 공유 (매우 깁니다 -3-) 11 file 샤이귤군 2015.03.28 912
689 언어/기타 픽사에서 텍스쳐 꽁짜로 뿌림ㅋ 8 사람님(대회참가) 2015.03.26 912
688 언어/기타 멀티해상도에 따른 속도와 가속도 값의 조절 1 MiDtics2 2013.01.13 859
687 언어/기타 [Android] 멀티스크린 노하우 2 MiDtics2 2012.10.27 1516
686 언어/기타 [js] 코드 압축 걸음마 2 1 2012.06.12 1059
685 언어/기타 [css] css 겉핥기 핥핥 1 file 2012.05.03 938
684 언어/기타 [css, js] form - select안의 option들에 스타일 적용하기 4 file 2012.04.28 5364
683 언어/기타 게임,개발기획의 기초 5 Grand 2011.08.01 2900
682 언어/기타 지형설정에서 원경(앞, 뒤)가 가지는 역할 file Dicky 2011.07.28 2491
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 36 Next
/ 36


[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)