조회 수 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
번호 분류 제목 글쓴이 날짜 조회 수
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 725
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 702
836 언어/기타 자바 기초 로직 ˙ dnajs 2006.09.16 1290
835 언어/기타 자료구조 (3) - 링크리스트 성령의분노 2006.03.24 465
» 언어/기타 자료구조 (2) - Queue[민프레스 강의정리] 성령의분노 2005.12.31 392
833 언어/기타 자료구조 (1) - Stack [민프레스 강의정리] 성령의분노 2005.12.30 549
832 언어/기타 자동 길찾기 기능을 만들어보자 1 file Black-☆ 2010.08.19 3489
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(김원배) | 사신지(김병국)