게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
원형큐 출력 질문입니다...
게시물ID : programmer_5716짧은주소 복사하기
작성자 : 악!내눈!
추천 : 0
조회수 : 1017회
댓글수 : 2개
등록시간 : 2014/09/30 21:24:01
옵션
  • 본인삭제금지
저번 방학때 인턴 실습을 했었는데, 이번에 면접 준비한다고 다시 프로그램을 짜는중입니다..
 
그런데 벌써 다 까먹어버렸네요 ㅠㅠ
 
일단 기본 개념은 이렇습니다.
 
1. 배열 형태의 원형큐 생성
2. 자료를 계속 넣는데(24시간의 자료를 1시간씩 넣음) 만약 큐가 꽉차면 가장 오래된 자료는 삭제하고 그부분에 가장 최근자료 넣음
-> 이때 1시간의 자료들은 여러개기때문에 memcpy를 통해 복사.
3. 가장 최근자료부터 출력.
 
일단 지금은 테스트를 위해서 난수를 각 배열에 넣어 출력확인해보려고하는데요..
 
이상하게 제대로 작동안되네요... 출력부분만 봐주시면 감사하겠습니다 (__)
--------------------------------------------------------------------------
#include<stdio.h>
#include<time.h>
#include<Windows.h>
#include<stdlib.h>
#define DATA_SIZE 24
#define MAX_H 25

typedef struct _element{
 unsigned int array[DATA_SIZE];
} element;

typedef struct {
 int front_h;
 int rear_h;
 int count_h;
 element Queue_H[MAX_H];
 } Queue;
void init(Queue *q);
void addqueue_h(Queue *q, element *data);
void print_h(Queue *q);
void copyarr(element *dest,element *source);

int main()
{
 int number;
 int outnum;
 int random;
 element temp;
 Queue qh;
 init(&qh);
 srand((unsigned)time(NULL));
 for(outnum=0;outnum<MAX_H;outnum++)
 {
  for(number=0;number<DATA_SIZE;number++)
  {
    random = rand();  // 난수생성
    temp.array[number]=random%10; // 임시배열에 난수 넣기
  }
  addqueue_h(&qh,&temp); // temp를 큐에 넣기
  print_h(&qh); // 큐 출력
  printf("\n");
 }
}
void init(Queue *q) // 큐 초기화
{
 memset(q->Queue_H,0,sizeof(element)* MAX_H);
 q->front_h=1;
 q->rear_h=0;
 q->count_h=0;
}
void addqueue_h(Queue *q, element *data) // 데이터 추가
{
 if(q->count_h == MAX_H)
 {
  q->front_h=(q->front_h+1)%MAX_H;
  copyarr(&q->Queue_H[q->rear_h],data);
  q->rear_h=(q->rear_h+1)%MAX_H;
 }
 else
 {
  copyarr(&q->Queue_H[q->rear_h],data);
  q->rear_h++;
  q->count_h++;
 }
}
void print_h(Queue *q) // 큐 출력                       ->>>>>>>>>>> 이 부분을 어떻게 고쳐야 될까요?
{
 int i;
 for(i=q->front_h;i<q->rear_h;i++);
  printf("%d ",q->Queue_H[i]);
}

void copyarr(element *dest,element *source) // 데이터 넣기
{
 memcpy(dest->array, source->array,sizeof(int)* DATA_SIZE);
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호