조회 수 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
번호 분류 제목 글쓴이 날짜 조회 수
764 RPG Maker 나름대로 게임제작1 - 시나리오 작성법 켈리시 2006.12.26 1447
763 언어/기타 포토샵 완전 정복 !! - 1 - (채도감소) file 다크세이버™ 2006.12.20 532
762 언어/기타 바람수지매클 이동리스트 작성요령 file 청연 2006.12.20 372
761 RPG Maker 방사형 마법범위 좌표구하기 BAYONET 2006.12.17 1512
760 언어/기타 [이벤트 ID이용의 예]슈팅 게임 file masa 2006.12.16 1215
759 언어/기타 맵배치 이런식으로 하면 되려나요..?'';; file 땅콩아줌마 2006.12.15 1690
758 언어/기타 이벤트를 이용, 장애물을 포함한 적과의 거리계산[중급이상추천] file masa 2006.12.14 1291
757 언어/기타 각툴의 팔렛트비교 카타린 2006.12.13 752
756 언어/기타 주인공 이름이 마땅한게 없다면~ 3 네모상자 2006.12.12 1135
755 언어/기타 [C++] 객체 지향 프로그래밍 (OOP) -1- Zeprod 2006.12.12 1191
754 RPG Maker 알만툴 K강의. 스위치를 알자 ☆KBOY★ 2006.12.12 1184
753 언어/기타 [서론] 콘솔창으로 작업하는 것이 허무하신가요? Zeprod 2006.12.10 1064
752 언어/기타 축구게임 시스템 헤지혹 2006.12.10 1358
751 언어/기타 [도트] 포션그리기 카타린 2006.12.10 1041
750 언어/기타 [첫강좌] 양털을 깎아봅세~! file 땅콩아줌마 2006.12.10 627
749 RPG Maker 범위를 구할때 쓸 수 있는 식 둘 메카_탁 2006.12.09 1214
748 언어/기타 이론강의 3. 제작에 앞서 해야 될 것들 Vermond 2006.12.09 428
747 언어/기타 이론강의 2.Vnap으로 제작가능한 장르 Vermond 2006.12.09 562
746 언어/기타 이론강의 1. Vnap이란? Vermond 2006.12.09 545
745 언어/기타 외딴 집이랄까..? .. file 도야 2006.12.05 1289
Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 ... 51 Next
/ 51






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

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