조회 수 549 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
264 언어/기타 자료구조 (2) - Queue[민프레스 강의정리] 성령의분노 2005.12.31 392
263 RPG Maker 한방씩 주고 받는 턴제식 rpg 잠시 30분동안 만들어봣습니다 .ㅋ *YeNa* 2005.12.30 388
262 RPG Maker 30분동안 만들어본 방식 rpg 아이디어정보공유에도올림 *YeNa* 2005.12.30 311
261 언어/기타 bbb 김태환짱 2005.12.30 303
260 언어/기타 마법상점 rlsrnjs 2005.12.30 387
259 RPG Maker 파티 소환 시스템! Lathanter 2005.12.30 728
258 RPG Maker [VB] SRPG의 이동경로는 어떻게? (1) 1 성령의분노 2005.12.30 852
257 RPG Maker [RXP]윈도우 만들기 1탄-윈도우 제작 file 『연금술사』 2005.12.30 1111
» 언어/기타 자료구조 (1) - Stack [민프레스 강의정리] 성령의분노 2005.12.30 549
255 언어/기타 스위치마스터 中편 『덩키동크』 2005.12.28 752
254 언어/기타 악당들의 유형들..? 크레시스 2005.12.27 2006
253 언어/기타 허기와 피로도 『연금술사』 2005.12.27 544
252 언어/기타 사회 경험치 『연금술사』 2005.12.26 520
251 언어/기타 나름대로 이름 만드는 요령 『연금술사』 2005.12.26 936
250 RPG Maker 변수로 이용한 나이, 행동력, 명성 조작하기 ^_^ (중복인가요?) file 火제이치★ 2005.12.25 752
249 언어/기타 문득 생각난 -ㅁ- ; 거리를 이용하여 원거리 무기 .. 예화 2005.12.24 341
248 언어/기타 중복일가능성 99%..이지만.. 모르는분들을위해서!! file 밀크메이커 2005.12.22 721
247 언어/기타 스토리 아이디어 앞만보맨 2005.12.19 617
246 언어/기타 원하는 스토리 ☆[곰돌따라쨘쨘]★ 2005.12.12 595
245 RPG Maker [RPG XP]간단한.... 그러나 중요한, 그림자 만들기 file 실키 2005.12.12 885
Board Pagination Prev 1 ... 33 34 35 36 37 38 39 40 41 42 ... 51 Next
/ 51






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

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