[C언어 프로그램]Priority Queue Management(우선순위 큐 관리 프로그램)
- 최초 등록일
- 2011.06.28
- 최종 저작일
- 2011.04
- C언어
- 가격 2,000원
소개글
1. 프로그램 설계
가. 프로그램 목표
파일입력으로 type, priority, computing_time 필드를 받아 Priority queue를 관리하는 프로그램
나. 프로그램 실행절차
1) initialize_queue()함수를 실행하여 큐를 초기화 한다.
2) 파일로 type, priority, computing time을 입력받는다. (20개)
3) type값이 0이라면 insert_queue()함수를 실행한다.
4) type값이 1이라면 delete_queue()함수를 실행한다.
5) 20개의 데이터를 다 처리한 후 print_queue() 함수를 실행한다.
6) 프로그램이 종료된다.
다. 함수설계
1) int main(void)
- 파일을 이용하여 type, priority, computing time 값을 읽는다.
- type값을 구분하여 삽입 혹은 삭제 함수를 호출한다. (type=0 : 삽입, type=1 : 삭제)
- 출력함수를 호출한다.
2) void initialize_queue(void)
- 3개의 queue 헤더 배열을 초기화 해준다.
3) int insert_queue(int priority, int computing_time)
- 매개변수로 입력받은 priority값으로 queue_id 값을 판단한다.
- 새로운 노드를 동적 메모리 할당해주고 내부 값을 초기화 한다.
- 삽입될 위치를 검색한다. (삽입 위치의 앞 노드에 포인터가 위치)
- 맨 앞, 중간, 맨 뒤의 조건에 따라 노드 삽입이 이루어진다.
4) int delete_queue(int priority)
- 매개변수로 입력받은 priority값으로 queue_id 값을 판단한다.
- 해당 queue_id값의 큐에 최상위 데이터가 입력받은 priority값보다 크거나 같은 경우 해당 노드를 삭제한다.
- 조건에 맞는 상황이 아닐 경우 함수를 종료한다.
- 삭제되는 노드의 다음 노드를 큐의 헤더에 연결하고 새로 연결된 노드의 좌링크를 초기화 한다.
- 삭제되는 노드의 priority, computing time값의 정보를 출력한다.
- 삭제되는 노드를 free()함수를 이용하여 메모리를 반환시킨다.
5) void print_queue(void)
- 입력 종료 후 3개의 큐에 남아있는 데이터를 출력한다.
※ 유닉스에서 작동 가능하며 txt 파일을 입력 받는다.
컴파일 실행환경
GCC
참고 자료
txt파일 내용 예시는 아래와 같다.
0 1 20
0 3 5
0 12 14
0 2 12
1 2 10
0 22 20
0 25 20
1 22 25
0 11 5
0 18 6
1 12 23
0 16 17
0 20 20
0 25 20
0 9 5
0 12 14
1 1 6
0 18 14
1 25 6
1 18 13
0 5 5