조회 수 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
번호 분류 제목 글쓴이 날짜 조회 수
784 언어/기타 초간단 작명법 Mr. J 2007.01.11 539
783 언어/기타 데미지의 난수처리(난수 사이의 난수) FirstMoon 2007.01.15 539
782 언어/기타 무기를 새로 넣어보면,,, KIA 2006.05.19 539
781 언어/기타 그래픽 제작 도구들 dnajs 2006.09.21 540
780 언어/기타 스타 맵을 만들어 볼까? -기초 1- file 다크세이버™ 2006.09.24 542
779 RPG Maker RPGXP 초보강좌 [전투에서의 이벤트] file 우리의만두 2006.02.04 543
778 언어/기타 허기와 피로도 『연금술사』 2005.12.27 544
777 언어/기타 아이템 합성 CC(虎) 2006.01.07 544
776 언어/기타 이론강의 1. Vnap이란? Vermond 2006.12.09 545
775 언어/기타 리터칭 칩셋 file CC(虎) 2005.09.19 545
774 언어/기타 나를 로긴하게한 MP3기능 간장맛봉봉 2006.01.11 549
» 언어/기타 자료구조 (1) - Stack [민프레스 강의정리] 성령의분노 2005.12.30 549
772 언어/기타 지역 특산물/명스킬 CC(虎) 2005.10.20 550
771 언어/기타 삼국지처럼 계급시스템을... 2006.01.17 550
770 언어/기타 R2K3 로 아이템창고 제작 Ark。 2006.05.14 550
769 언어/기타 [연재] 1강 보조강의 - RGB값을 알아내자! 만삐 2006.08.29 551
768 언어/기타 가방만들기./ 린쌍 2005.11.19 551
767 언어/기타 [자작강좌]모닷불 주변으로 불빛 일렁거리게 하기 효과 플레니아 2006.04.25 551
766 언어/기타 액알이 어려워서 못하시는 분들을 위해 올림.. file 귀여븐닌자 2006.05.01 553
765 언어/기타 ddr 같은 음악게임 Ress 2006.02.11 554
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 ... 51 Next
/ 51






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

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