편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2021.04.23

    자료구조 연결리스트 큐 작성중 error C2440: '함수': 'int'에서 'element'(으)로 변환할 수 없습니다.


    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    
    //typedef int element;
    typedef struct {
        int id;  //현재시각
        int service_time; //서비스 시간
        int arrival_time; //도착시간
    }element;
    
    typedef struct QueueNode {
        element data;
        struct QueueNode* link;
    }QueueNode;
    
    
    typedef struct {
        QueueNode* front, * rear;
    }LinkedQueueType;
    
    int ListLength(LinkedQueueType* q) {
        int len = 0;
        LinkedQueueType* current;
            current= q;
        while (current->front != NULL)
        {
            len++;
            current->front = current->front->link;
        }
        return len;
    }
    void init_queue(LinkedQueueType* q) {
        q->rear = NULL;
        q->front = NULL;
    }
    int is_empty(LinkedQueueType* q) {
        if (q->front == NULL&& q->rear==NULL)
            return 1;
        else
            return 0;
    }
    
    void enqueue(LinkedQueueType* q, element data)
    {
        QueueNode* temp = (QueueNode*)malloc(sizeof(QueueNode));
        temp->data = data;
        temp->link = NULL;
        if (is_empty(q)) {
            q->front = temp;
            q->rear = temp;
    
        }
        else {
            q->rear->link = temp;
            q->rear = temp;
        }
    }
    
    element dequeue(LinkedQueueType* q) {
        QueueNode* temp = q->front;
        element data;
        if (is_empty(q)) {
            fprintf(stderr, "스택이 비어있음\n");
            exit(1);
    
        }
        else {
            data = temp->data;
            q->front = q->front->link;
            if (q->front == NULL)
                q->rear = NULL;
            free(temp);
            return data;
        }
    }
    void delete(QueueNode *q, QueueNode* pre) {
        QueueNode* removed;
        removed = pre->link;
        pre->link = removed->link;
        free(removed);
    }
    
    /*void print_list(LinkedQueueType*q) {
        for (LinkedQueueType* p = q; p->front!= NULL; p->front = p->front->link)
        {
            printf("%d->", p->front->data);
        }printf("NULL\n"); 
    }
    */
    
    void main() {
        LinkedQueueType atm1; //첫번째 atm
        LinkedQueueType atm2; 
        LinkedQueueType atm3;
    
        init_queue(&atm1); // atm 리스트 초기화
        init_queue(&atm2);
        init_queue(&atm3);
    
        enqueue(&atm1, 2);
    
        //printf("%d",dequeue(&atm1));
        printf("%d",ListLength(&atm1));
    
    
    }
    
    
    1>C:\Users\gjdms\source\repos\Project1\Project3\연결리스트큐.c(100,18): 
    error C2440: '함수': 'int'에서 'element'(으)로 변환할 수 없습니다.
    

    여기서 이런 에러가발생하는데 이유를 못찾겠어요!

  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.04.22

    자료구조 연결리스트 큐 질문이요!


    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    
    //typedef int element;
    typedef struct {
        int id;  //현재시각
        int service_time; //서비스 시간
        int arrival_time; //도착시간
    }element;
    
    typedef struct QueueNode {
        element data;
        struct QueueNode* link;
    }QueueNode;
    
    
    typedef struct {
        QueueNode* front, * rear;
    }LinkedQueueType;
    
    int ListLength(LinkedQueueType* q) {
        int len = 0;
        LinkedQueueType* current;
            current= q;
        while (current->front != NULL)
        {
            len++;
            current->front = current->front->link;
        }
        return len;
    }
    void init_queue(LinkedQueueType* q) {
        q->rear = NULL;
        q->front = NULL;
    }
    int is_empty(LinkedQueueType* q) {
        if (q->front == NULL&& q->rear==NULL)
            return 1;
        else
            return 0;
    }
    
    void enqueue(LinkedQueueType* q, element data)
    {
        QueueNode* temp = (QueueNode*)malloc(sizeof(QueueNode));
        temp->data = data;
        temp->link = NULL;
        if (is_empty(q)) {
            q->front = temp;
            q->rear = temp;
    
        }
        else {
            q->rear->link = temp;
            q->rear = temp;
        }
    }
    
    element dequeue(LinkedQueueType* q) {
        QueueNode* temp = q->front;
        element data;
        if (is_empty(q)) {
            fprintf(stderr, "스택이 비어있음\n");
            exit(1);
    
        }
        else {
            data = temp->data;
            q->front = q->front->link;
            if (q->front == NULL)
                q->rear = NULL;
            free(temp);
            return data;
        }
    }
    void delete(QueueNode *q, QueueNode* pre) {
        QueueNode* removed;
        removed = pre->link;
        pre->link = removed->link;
        free(removed);
    }
    
    /*void print_list(LinkedQueueType*q) {
        for (LinkedQueueType* p = q; p->front!= NULL; p->front = p->front->link)
        {
            printf("%d->", p->front->data);
        }printf("NULL\n"); 
    }
    */
    
    void main() {
        LinkedQueueType atm1; //첫번째 atm
        LinkedQueueType atm2; 
        LinkedQueueType atm3;
    
        init_queue(&atm1); // atm 리스트 초기화
        init_queue(&atm2);
        init_queue(&atm3);
    
        enqueue(&atm1, 2);
    
        //printf("%d",dequeue(&atm1));
        printf("%d",ListLength(&atm1));
    
    
    }
    
     1. ***List item***
    

    1>C:\Users\gjdms\source\repos\Project1\Project3\연결리스트큐.c(100,18): error C2440: '함수': 'int'에서 'element'(으)로 변환할 수 없습니다.

    여기서 이런 에러가발생하는데 이유를 못찾겠어요!