자료구조, 큐
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

자료구조, 큐에 대한 보고서 자료입니다.

본문내용

;
printf("+ 프로그램을 종료합니다. 현재까지의 상황을 출력 합니다.+\n"); printf("++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
Current_situation(); //현재 상황 출력
}
// 메뉴 선택 함수 시간 복잡도 O(n)
int menu()
{
int m_num;
while(1)
{ printf("==============================================\n");
printf("= 1.고객 입장 2.고객 퇴장 3. 현재 상황 4. 종료 =\n");
printf("========================================\n");
printf("원하는 메뉴의 번호를 입력해 주세요 : ");
scanf("%d",&m_num);
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
if( m_num > 0 && m_num < 5 )
return m_num;
else
{ printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n");
printf("x 잘못입력하셧습니다. 다시 입력해 주세요. x\n"); printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n");
}
}
}
// 에러 검출 함수 시간 복잡도 O(1)
void error(char *message)
{
fprintf(stderr,"%s\n",message);
exit(1);
}
// 고객 입장 함수 시간 복잡도 O(1)
void Customer_perspective(QueueType *q)
{
QueueNode *temp = (QueueNode*)malloc(sizeof(QueueNode));
if(temp == NULL)
error("메모리를 할당할 수 없습니다.");
printf("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf("고객의 이름을 입력하세요 : ");
scanf("%s", &temp->item.name);
printf("주문량을 입력해 주세요 : ");
scanf("%d", &temp->item.num);
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
if(q->front == NULL) // 큐에 처음 자료가 들어올때
{
q->front = temp;
q->rear = temp;
}
else // 처음 아닌 모든 경우
{
q->rear->link = temp;
q->rear = temp;
}
temp->link = NULL;
number++; // 총인원수 ++
total_sale += temp->item.num; // 총판매수 ++
}
// 초기화 함수 시간 복잡도 O(1)
void init(QueueType *q)
{
q->front = q->rear = NULL;
}
// 고객 퇴장 함수 시간 복잡도 O(1)
void Customer_exit(QueueType *q)
{
QueueNode *temp = q->front;
if(q->front == NULL)
printf("더이상 주문이 없습니다.\n");
else
{
printf("%s고객님이 주문하신 %d개가 나왔습니다.\n", q->front->item.name, q->front->item.num);
use++;
sale += q->front->item.num;
q->front = q->front->link;
if(q->front == NULL)
q->rear = NULL;
free(temp);
}
}
// 현재 상황 출력 함수 시간 복잡도 O(1)
void Current_situation()
{
printf("*********************************\n");
printf("* 총 고객의 수 : %d 명 *\n", number);
printf("* 구매 완료한 고객 수 : %d 명 *\n", use);
printf("* 현재 대기중인 고객 수 : %d 명 *\n", number - use);
printf("* 총 판매 개수 : %d 개 *\n", total_sale);
printf("* 판매 완료된 갯수 : %d 개 *\n", sale);
printf("* 부족한 갯수 : %d 개 *\n", total_sale - sale);
printf("*********************************\n");
}
ⅱ) main문의 시간복잡도 : n^2
ⅲ) 결과구현
① 처음 아이스크림 판매 프로그램을 실행한 모습
② 메뉴 1번을 이용해서 고객 입장(주문)을 받는 장면 (고객의 이름과 아이스크림 개수를 적음)
③ 메뉴2번 선택 시 선입선출방식으로 가장 빨리 주문받은 고객 한명을 삭제함.
④ 메뉴 3번 선택시 지금까지의 모든 상황을 출력해줌
4. 기타
중간고사 때에는 연결리스트를 이용한 응용(도서 관리 프로그램)을 만들어 보았는데 이번에는 교재 6장 큐를 응용하여 아이스크림 판매 프로그램을 만들었습니다. 배열로 구현된 큐에 비하여 크기가 제한되지 않는다는 장점을 지닌 연결리스트를 이용한 큐를 만들었습니다.
큐 알고리즘을 구현하는데 있어 먼저 어떻게 응용하면 좋을까 계속 고민해보고 교재에 나와 있는 큐 예제 아이스크림 판매 프로그램은 현재 시간의 랜덤과 손님수의 랜덤수를 집어넣어 복잡하기만 하고 쓸모가 없어 보여 정말 판매와 실적 조회 등 기능을 가진 실용성 있는 프로그램으로 만들어 보았습니다.
선입선출 방식의 큐의 일상생활에 쓰임을 살펴보면 번호표를 뽑고 기다리는 은행과, 프린터의 문서대기 순서, 식당, 기차표발행 등등 모든 줄서기에 활용될 것입니다. 중간과제를 통해 이미 한번 해보았고, 기말과제 또한 사용하는 알고리즘 분야만 달라졌지 보고서의 형식은 비슷해 더 빨리 보고서 작성을 할 수 있었고 또한 이번 학기 자료구조의 과목을 들으면서 설계에 있어 자료구조와 알고리즘의 중요성을 알게 되었고 알고리즘을 먼저 생각하면 더 쉽고 정확하게 프로그램 구현이 가능하다는 것을 알게 되었습니다.

키워드

  • 가격3,300
  • 페이지수10페이지
  • 등록일2012.08.31
  • 저작시기2010.7
  • 파일형식한글(hwp)
  • 자료번호#762705
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니