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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
[ 특징 ]
스택과는 달리 입구와 출구가 서로 다르다.
먼저 들어온 데이터가 먼저 빼어낼 수 있다.
FIFO( FIRST-IN FIRST-OUT ) 구조라고 한다.
큐의 동작은 PUT과 GET동작이 있다.
자료를 빼내는 동작은 GET이라고 하며, 자료를 넣는 동작은 PUT이라고 한다.
PUT동작시에는 자료를 항상 뒤( REAR )부터 넣는다.
GET동작을 통해서 자료를 빼어 낼때는 앞( FRONT )로 빼어낸다.
윈도우 메시지 관리 등에 사용.

[ 개념도 ]



[ 예제소스 ]
#include
#include
int front, rear;
int queue[5];

void init_queue()
{
front = rear = 0;
}
초기화입니다.

int get()
{
int get_num;
if( front > 4 )
{
printf("언더플로우 발생 n");
get_num = -1;
}else
get_num = queue[front++] ;
return get_num;
}

GET함수입니다. GET는 데이터를 삭제하는 함수가 아닙니다. 정보를 불러들이는 함수인데요. 처음 입력한 자료부터 하나씩 출력할 수 있지만, 이전 데이터가 삭제되는 것은 아닙니다 ( 삭제라도 별 상관은 없지만... )
큐배열의 FRONT( 앞, 말하자면 현재 출력할 데이터 위치입니다 )위치의 데이터를 리턴시키고 FRONT값을 하나 증가시킵니다. 그러니 다음번엔 변수 FRONT + 1 자리의 데이터가 GET되겠죠.

int put( int put_num )
{
int flag = 1;
if( rear > 4 )
{
printf("~~오버플로우 발생~~n");
flag = 0;
}else 
queue[rear++] = put_num; 
return flag;
}

GET과 비슷하게 현재위치에 데이터를 입력하고 변수 REAR을 증가시킵니다.

void print_queue()
{
int i;
for( i = front ; i < rear ; i++ )
{
printf("%d", queue[i] );
}
putch('n');
}

순서대로 출력을 합니다.

void main()
{

printf(" 배열을 이용한 큐 프로그램 입니다 n");
int select_num;
int put_num;
int get_num;
init_queue();
while( 1 )
{

printf(" 1) put  2) get  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", &put_num );
     if( put( put_num ) )   
     printf("풋(put)을 실행 했습니다n");
     break;
  case 2 :
       get_num = get();
    if( get_num > 0 )
     printf("겟(get)을 실행 했습니다, get한 값은 %d 입니다n", get_num);
    break;
  case 3 :
    print_queue();
    break;
 }  
}
}
printf("프로그램을 종료합니다n");
getch();
}

엔진입니다.



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

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
924 RPG Maker [RPG XP]스크립트를 이용한 SRPG 이동범위 산출 및 범위 보여주기 4 file 신덴 2009.01.09 4170
923 RPG Maker [VX] 메뉴화면에 이어하기를 넣는 스크립트... 카리스 2009.01.09 2877
922 RPG Maker RPGVX 원거리액알 예제 記憶 2008.12.16 2408
921 언어/기타 [잡담] ONE's SCRIPT 소개 Zeprod 2008.12.16 1409
920 언어/기타 [ODS] ODS 사용환경 설정법 Zeprod 2008.12.16 1308
919 RPG Maker [VX] 집안의 블라인드 다듬기 ~2차 블라인드 정의로운녀석! 2008.11.27 1867
918 RPG Maker SRPG 만들기 강의 - 0. SRPG는 무엇일까? 2 contect 2008.07.27 4351
917 RPG Maker [VX] 창문으로 빛이 뚫고 나오게 하기 [뽀샵] 1 정의로운녀석! 2008.07.20 3386
916 언어/기타 [아이디어, 기획] 쿠소게임의 대반란 A. 미스릴 2008.07.20 2569
915 언어/기타 주인공들의 유형. [1] 히트맨 2008.07.14 2535
914 언어/기타 [ODS] 그림을 움직여보겠습니다(Animate) Zeprod 2008.06.07 1835
913 언어/기타 [다크의 4차원 강좌] 제목 설정의 중요성 1 다크아머 2008.05.19 1651
912 언어/기타 엔진 제작중...... 랜스 2008.05.19 1845
911 언어/기타 3Ds Max로 모델링한거 띄우기 file 랜스 2008.05.02 2394
910 RPG Maker [ODS] ONE 상에 그림 띄우기 Zeprod 2008.05.02 1374
909 RPG Maker RPG_xp업그레이드 팩키지 1 星の카비 2008.04.26 2803
908 언어/기타 [덧붙임] 변수번호의 스위치 사용은 되도록이면 자제 A. 미스릴 2008.04.26 1516
907 언어/기타 2k에서 손쉽게 보수[걸음수] 계산하기 땡중 2008.02.11 2429
906 언어/기타 귀차니즘 타파 알고리즘 file A. 미스릴 2008.02.11 1446
905 RPG Maker 맵상 랜덤엔카운트 제어 이벤트 Evangelista 2008.01.12 1933
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 51 Next
/ 51






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

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