조회 수 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
번호 분류 제목 글쓴이 날짜 조회 수
844 언어/기타 잠입 게임 아이디어 아르킨 2007.01.07 1302
843 언어/기타 작은 팁하나..전투애니메이션의 픽쳐화! file 윈드 2007.01.31 1572
842 RPG Maker 자질구레팁1] 0.75배속/1.5배속/3배속으로 이벤트를 움직이게 해보자. 파파 곤잘레스 2006.04.18 479
841 언어/기타 자작광석4개 A.M.S 2010.02.07 723
840 언어/기타 자작 시스템 [z]버튼 누르고 상자밀고 끌기 시스템... - 3- file 플레니아 2006.04.25 383
839 언어/기타 자유 게시판에서 한바탕 난리를 보신 분들도 있을 겁니다. file 아란 2006.08.13 911
838 언어/기타 자연스러운 커다란 맵에 스크린샷 나른한지지 2006.01.12 535
837 언어/기타 자바스크립트와 관련해서 참고할 만한 사이트들 3 MARCO 2015.10.04 701
836 언어/기타 자바 기초 로직 ˙ dnajs 2006.09.16 1290
835 언어/기타 자료구조 (3) - 링크리스트 성령의분노 2006.03.24 465
834 언어/기타 자료구조 (2) - Queue[민프레스 강의정리] 성령의분노 2005.12.31 392
» 언어/기타 자료구조 (1) - Stack [민프레스 강의정리] 성령의분노 2005.12.30 549
832 언어/기타 자동 길찾기 기능을 만들어보자 1 file Black-☆ 2010.08.19 3487
831 RPG Maker 자가진화하는 CPU 플레이어 file 니체 2006.05.14 400
830 언어/기타 임시변수 없이 스왑(swap)하기~ 케이코냥이 2006.08.28 1140
829 언어/기타 일정한 장비착용시 HP나 MP가 회복되게 해보자! 어둠의그림자 2005.09.23 624
828 언어/기타 일단 예제를 만들어보십쇼5칸이내로 가면 죽는 시스템 のㅏ②뜨 2005.08.11 350
827 언어/기타 일, 시간, 분, 초 시스템 . 스포아 2006.06.28 868
826 언어/기타 인터넷으로 케메하기 안티테제 2005.06.19 1113
825 언어/기타 인터넷으로 케릭터제작하기[2번에있는거펌] 사토루 2005.08.13 1539
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 51 Next
/ 51






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

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