일단 원본코드는 다음과 같습니다.

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define TRUE 1

#define FALSE 0

#define MAX_QUEUE_SIZE 100

typedef struct {

    int id;

    int arrival_time;

    int service_time;

}element;

typedef struct {

    element queue[MAX_QUEUE_SIZE];

    int front, rear;

}QueueType;

QueueType queue;

//

void error(char* message) {

    fprintf(stderr, " % s\n", message);

    exit(1);

}

//

void init(QueueType* q) {

    q->front = q->rear = 0;

}

//공백 상태 검출 함수

int is_empty(QueueType* q) {

    return (q->front == q->rear);

}

//포화 상태 검출 함수

int is_full(QueueType* q) {

    return ((q->rear + 1) % MAX_QUEUE_SIZE == q->front);

}

//삽입 함수

void enqueue(QueueType* q, element item) {

    if (is_full(q))

        error("큐가 포화상태입니다");

    q->rear = (q->rear + 1) % MAX_QUEUE_SIZE;

    q->queue[q->rear] = item;

}

//삭제 함수

element dequeue(QueueType* q) {

    if (is_empty(q))

        error("큐가 공백상태입니다");

    q->front = (q->front + 1) % MAX_QUEUE_SIZE;

    return q->queue[q->front];

}

//삭제 함수

element peek(QueueType* q) {

    if (is_empty(q))

        error("큐가 공백상태입니다");

    return q->queue[(q->front + 1) % MAX_QUEUE_SIZE];

}

//삽입 함수

double random() {

    return rand() / (double)RAND_MAX;

}

//시뮬레이션에 필요한 여러가지 상태 변수

int duration = 10; //시뮬레이션 시간

double arrival_prob = 0.7; //하나의 시간단위에 도착하는 평균 고객의 수

int max_serv_time = 5; //하나의 고객에 대한 최대 서비스 시간

int clock;

//시뮬레이션의 결과에 쓰이는 변수

int customers; //전체 고객수

int served_customers; //서비스받은 고객수

int waited_time; //고객들이 기다린 시간

//랜덤 숫자를 생성하여 고객이 도착했는지 도착하지 않았는지를 판단

int is_customer_arrived() {

    if (random() < arrival_prob)

        return TRUE;

    else return FALSE;

}

    //새로 도착한 고객을 큐에 삽입

    void insert_customer(int arrival_time) {

        element customer;

        customer.id = customers++;

        customer.arrival_time = arrival_time;

        customer.service_time = (int)(max_serv_time * random()) + 1;

        enqueue(&queue, customer);

        printf("고객 % d이 % d 분에 들어옵니다.서비스 시간은 % d 분입니다.\n", customer.id,

            customer.arrival_time, customer.service_time);

    }

    //큐에서 기다리는 고객을 꺼내어 고객의 서비스 시간을 반환한다

    int remove_customer() {

        element customer;

        int service_time = 0;

        if (is_empty(&queue)) return 0;

        customer = dequeue(&queue);

        service_time = customer.service_time - 1;

        served_customers++;

        waited_time += clock - customer.arrival_time;

        printf("고객 % d이 % d 분에 서비스를 시작합니다.대기시간은 % d 분이었습니다.\n",

            customer.id, clock, clock - customer.arrival_time);

        return service_time;

    }

    //통계치를 출력한다

    void print_stat() {

        printf("서비스를 받은 고객수 = % d\n", served_customers);

        printf("전체 대기시간 = % d\n", waited_time);

        printf("1인당 평균대기 시간 = % f\n", (double)waited_time /(double) served_customers);

        printf("아직 대기중인 고객수 = % d\n", customers - served_customers);

    }

    //시뮬레이션 프로그램

void main(){

int service_time=0;

clock=0;

while(clock < duration){

clock++;

printf("현재시각=%d\n",clock);

if (is_customer_arrived()) {

insert_customer(clock);

}

if (service_time > 0) service_time--;

else service_time = remove_customer();

}

print_stat();

}

해당결과물은 다음과 같고요

그런데 해당코드를 링크드 리스트로 만들려는데 다음과 같은 코드로 만들었더니:

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

#include<stdbool.h>


typedef struct {

    int no;

    int arr_time;

    int ser_time;

}element;

typedef int tem;

typedef struct queueType* Queue;


struct node {

    tem data;

    struct node* next;

};


typedef struct queueType {

    struct node* front;

    struct node* rear;

    int size;

}queueType;

queueType q;

void error(const char* message) {

    printf("%s\n", message);

    exit(1);//탈출? :네

}

double random() {

    return rand() / (double)RAND_MAX;

}

tem peek(Queue q) {

    //if (isEmpty(q))

    if(q->front == NULL)

        error("값출력 불가 큐 비어있음");

    return q->front->data;

}

Queue init() {

    Queue q = (Queue)malloc(sizeof(struct queueType));

    if (q == NULL)

        error("생성 오류 발생 큐 생성 불가");

    q->front = NULL;

    q->rear = NULL;

    q->size = 0;

    return q;


}

void delete(Queue q) {

    makeEmpty(q);

        deQueue(q);

    q->size = 0;

    free(q);

}

void makeEmpty(Queue q) {

    while (!isEmpty(q))

        deQueue(q);

    q->size = 0;

}

bool isEmpty(Queue q) {

    return q->front == NULL;

    /*

    * return q->front == NULL

    * return q->size == 0

    * 둘다가능

    */


}

void enQueue(Queue q, tem i) {

    struct node* new_node = (struct node*)malloc(sizeof(struct node));

    if (new_node == NULL)

        error("새로운 값 넣기 실패, 큐가 가득참");

    new_node->data = i;

    new_node->next = NULL;

    if (q->front == NULL) {

        q->front = new_node;

        q->rear = new_node;

    }

    else {

        q->rear->next = new_node;

        q->rear = new_node;

    }

    q->size++;


}

tem deQueue(Queue q) {

    struct node* oldFront;

    tem i;

    if (isEmpty(q))

        error("덱실패 큐가 비어 있음");

    oldFront = q->front;

    i = oldFront->data;

    q->front = oldFront->next;

    if (q->front == NULL)

        q->rear = NULL;

    free(oldFront);

    q->size--;

    return i;

}

int dura = 10l;

double ari_Prob = 0.7;

int maxsurvtime = 5;

int clock;

int customers;

int s_customer;

int wait_time;

int  isCostomerArrived() {

    if (random() < ari_Prob)

        return true;

    else

        return false;

}

void print_stat() {

    printf("서비스를 받은 고객수 = %d\n", s_customer);

    printf("전체 대기시간 = %d\n", wait_time);

    printf("아직도 대기중인 고객수= %d\n", customers - s_customer);

}

void insertCustomer(int arrivaltime) {

    element customer;


    customer.no = customers++;

    customer.arr_time = arrivaltime;

    customer.ser_time =

        (int)(maxsurvtime * random()) + 1;

    enQueue(&q, customer.no);

    printf("고객 %d이 %d분에 들어옵니다. 서비스시간은 %d 분입다.\n", customer.no, customer.arr_time, customer.ser_time);

}

int removeCustomer() {

    element customer;

    int ser_time = 0;

    if (isEmpty(&q)) return 0;

    customer.no = deQueue(&q);

    ser_time = customer.ser_time - 1;

    s_customer++;

    wait_time += clock - customer.arr_time;

    printf("고객 %d이 %d분에 서비스를 시작합니다. 대기시간은 %d분 이었습니다.\n", customer.no, clock, clock - customer.arr_time);

}

void main() {

    int service_time = 0;

    clock = 0;

    while (clock < dura) {

        clock++;

        printf("현재시각=%d\n", clock);

        if (isCostomerArrived()) {

            insertCustomer(clock);

        }

        if (service_time > 0) service_time--;

        else service_time = removeCustomer();

    }

    print_stat();

}

이런 오류가 나오네요 ㅠㅠ:
이게 왜이러는 거죠?ㅠㅠ