원형 연결 리스트를기반으로 프로그램을 구현한다.
직원 정보
당직
당직 확인
#ifndef __EMPLOYEE_H__
#define __EMPLOYEE_H__
#include <string.h>
typedef struct _emp
{
int emp_num;
char emp_name[15];
} EMP;
EMP *AddEmployee(int emp_num, const char *emp_name);
void ShowEmployee(EMP *pemp);
#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "Employee.h"
EMP *AddEmployee(int emp_num, const char *emp_name)
{
EMP *newEmp = (EMP *)malloc(sizeof(EMP));
newEmp->emp_num = emp_num;
strcpy(newEmp->emp_name, emp_name);
return newEmp;
}
void ShowEmployee(EMP *pemp)
{
printf("직원 번호 : %d \n", pemp->emp_num);
printf("직원 이름 : %s \n", pemp->emp_name);
}
#include <stdio.h>
#include <stdlib.h>
#include "CLinkedList.h"
#include "Employee.h"
void nextWork(EMP *pemp, List list, const char *name, int day);
int main()
{
List list;
EMP *pemp;
ListInit(&list);
int i;
pemp = AddEmployee(11111, "박효신");
LInsert(&list, pemp);
pemp = AddEmployee(22222, "나얼");
LInsert(&list, pemp);
pemp = AddEmployee(33333, "김동률");
LInsert(&list, pemp);
pemp = AddEmployee(44444, "이수");
LInsert(&list, pemp);
// 데이터 확인하기
printf("현재 데이터 수 : %d \n\n", LCount(&list));
if (LFirst(&list, &pemp))
{
ShowEmployee(pemp);
printf("\n");
for (i = 0; i < LCount(&list) - 1; i++)
{
if (LNext(&list, &pemp))
{
ShowEmployee(pemp);
printf("\n");
}
}
}
printf("\n");
nextWork(pemp, list, "박효신", 1);
nextWork(pemp, list, "나얼", 2);
nextWork(pemp, list, "김동률", 3);
nextWork(pemp, list, "이수", 4);
return 0;
}
void nextWork(EMP *pemp, List list, const char *name, int day)
{
LFirst(&list, &pemp);
if (strcmp(pemp->emp_name, name) != 0)
{
for (int i = 0; i < LCount(&list) - 1; i++)
{
LNext(&list, &pemp);
if (strcmp(pemp->emp_name, name) == 0)
{
break;
}
}
}
for (int i = 0; i < day; i++)
{
LNext(&list, &pemp);
}
printf("%s 직원 %d일 후 근무할 직원은 : %s \n", name, day, pemp->emp_name);
}
직원 번호 : 11111
직원 이름 : 박효신
직원 번호 : 22222
직원 이름 : 나얼
직원 번호 : 33333
직원 이름 : 김동률
직원 번호 : 44444
직원 이름 : 이수
박효신 직원 1일 후 근무할 직원은 : 나얼
나얼 직원 2일 후 근무할 직원은 : 이수
김동률 직원 3일 후 근무할 직원은 : 나얼
이수 직원 4일 후 근무할 직원은 : 이수