Функция инициализации очереди не работает - PullRequest
0 голосов
/ 30 июня 2018

Я пытаюсь создать очередь, используя массивы, однако моя функция инициализации, похоже, не работает. Даже первая строка функции не выполняется. Вот структура, функция и главное:

#include <stdio.h>
#include <stdlib.h>

typedef struct queue queue;

struct queue{
    int size, rear, front, length;
    int *arr;
};

queue* init(queue *queue1){
    queue1->size = 2;
    queue1->front = -1;
    queue1->rear = -1;
    queue1->length = 0;
    queue1->arr = (int*) malloc(sizeof(int)*queue1->size);
    return queue1;
}

int main(){
    queue* queue1 = init(queue1);
}

1 Ответ

0 голосов
/ 30 июня 2018

Сначала вы должны выделить место для вашей структуры.

Как это:

#include <stdio.h>
#include <stdlib.h>

typedef struct queue {
    int size, rear, front, length;
    int *arr;
} queue;

queue* init() {
    queue *queue1 = malloc(sizeof(queue));
    queue1->size = 2;
    queue1->front = -1;
    queue1->rear = -1;
    queue1->length = 0;
    queue1->arr = (int*) malloc(sizeof(int)*queue1->size);
    return queue1;
}

int main(){
    queue* queue1 = init();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...