c로 쓴 자료구조론 연습문제 3장(스택과큐)
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
해당 자료는 10페이지 까지만 미리보기를 제공합니다.
10페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

c로 쓴 자료구조론 연습문제 3장(스택과큐)에 대한 보고서 자료입니다.

목차

없음

본문내용

ueue[j].plane.remain_time <= 0 ))
{
// 그것의 인덱스를 저장.
idx.i = i;
idx.j = j;
return idx;// 인덱스 반환.
}
}
}
// 아닐경우. -1,-1 반환
return idx;
}
//////////////////////////////////////////////////////////////////////////
// queue method
// 삭제.
PLACE queue_pop_front( QUEUE* queue )
{
PLACE tmp;// 반환될 아이템.
// 프론트 위치 변경.
queue->front = (queue->front+1)%MAX_CIRCUL_QUEUE_SIZE;
tmp = queue->queue[queue->front];// 반환될 아이템 저장.
// 반환된 곳 0으로 초기화
memset( &(queue->queue[queue->front] ), 0 , sizeof(PLACE));
--(queue->size);// 사이즈 감소
return tmp;// 저장된 아이템 반환
}
// 뒤로 삽입.
void queue_push_back ( QUEUE* queue , PLACE item )
{
// 리어포인터 증가.
queue->rear = (queue->rear+1)%MAX_CIRCUL_QUEUE_SIZE;
queue->queue[queue->rear] = item;// 아이템 삽입.
++(queue->size);// 사이즈 증가.
}
//앞으로 삽입.
void queue_push_front( QUEUE* queue , PLACE item )
{
// 앞쪽에 삽입.
queue->queue[(queue->front)] = item ;
++(queue->size);//해당큐의 사이즈 증가.
// 프론트 포인터 변경.
if (--(queue->front) == -1)// 포인트가 -1이라면
{
// 프론트는 배열의 마지막 인덱스 번호
queue->front = MAX_CIRCUL_QUEUE_SIZE -1;
}
}
//////////////////////////////////////////////////////////////////////////
// stack method
// 삭제.
PLACE stack_pop( PLACE* stack , int* top )
{
return stack[(*top)--];
}
// 삽입
void stack_push( PLACE* stack , int* top , PLACE item )
{
stack[++(*top)] = item;
}
//////////////////////////////////////////////////////////////////////////
// 큐가 다 비어있다면 참을 반환
bool IsEmpty_all_queue( QUEUE* ptr )
{
int i;
bool full = TRUE;
for ( i = 0 ; i < MAX_ARRAY_SIZE ; i++ )
full &= IsEmpty_queue(ptr+i);
// AND 연산자 : 하나라도 FALSE(큐가 비어있지 않으면)라면 FALSE 값 유지
return full;
}
// 모든 큐가 가득 차 있다면. -1 하나라도 비어있다면 해당 인덱스를 반환.
int IsFull_all_queue( QUEUE* ptr )
{
int i ; // 임시 변수, 비어있는 곳의 인덱스
for ( i = 0 ; i < MAX_ARRAY_SIZE ; i++ )
{
if( IsFull_queue(ptr+i) == FALSE )
return i;// 비어있는 곳의 인덱스를 반환.
}
return FULL;
}
// holding 이 full이라면 -1 을 반환.
INDEX IsFull_holding(HOLD (*hold)[MAX_HOLDING_SIZE])
{
INDEX idx = { -1, -1};// 선회큐에서 비어있는 곳의 인덱스를 저장할 변수
int i , j ;// 임시 인덱스 변수
for ( i = 0 ; i < MAX_HOLDING_SIZE ; i++ ) {
for ( j = 0; j < MAX_HOLDING_SIZE ; j++ ) {
if (hold[i][j].plane.id == 0 )
{// 해당 선회큐가 비어있다면.
// 해당인덱스 저장 그리고 반환.
idx.i = i ;
idx.j = j ;
return idx;
}
}
}
// 다 가득차있다면 {-1,-1} 반환.
return idx;
}
// 해당 선회큐가 모두 비어있다면 참을 반환
bool IsEmpty_holding(HOLD (*hold)[MAX_HOLDING_SIZE])
{
int i , j ;// 임시 인덱스 변수
for ( i = 0 ; i < MAX_HOLDING_SIZE ; i++ ) {
for ( j = 0; j < MAX_HOLDING_SIZE ; j++ )
// 해당 위치에 비행기가 존재한다면 거짓 반환.
if (hold[i][j].plane.id != 0 ) return FALSE;
}
// 모두 비어있을경우 참 반환.
return TRUE;
}
// 활주로가 비어있다면 트루 반환
bool IsEmpty_runway( RUNWAY* run )
{
int i ;// 임시 인덱스
bool full = TRUE ;
for ( i = 0 ; i < MAX_RUNWAY_NUM ; i++ )
// 해당 아이템이 비어있지 않다면 거짓을 AND 연산해서 저장.
full &= ((run[i].plane.id == 0)? TRUE : FALSE);
// 그것을 반환
return full;
}
// 가득차있다면. -1을 반환. 그렇지 않다면 비어있는 곳의 인덱스를 반환.
int IsFull_runway( RUNWAY* run )
{
int i ;// 임시 인덱스 변수
for ( i = 0 ; i < MAX_RUNWAY_NUM ; i++ )
// 해당 활주로가 비어있다면 그곳의 인덱스를 반환
if (run[i].plane.id == 0)return i;
return FULL;
}
// simulation_airport.c END
  • 가격1,500
  • 페이지수58페이지
  • 등록일2011.11.16
  • 저작시기2011.10
  • 파일형식한글(hwp)
  • 자료번호#712583
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니