Я пытаюсь сделать домашнее задание и не знаю, куда идти, или я на правильном пути, чтобы сделать это правильно.Эта программа была дана мне с целью создания функции для создания нового узла с массивом, достаточно большим для хранения входного «счетчика».Оттуда я предполагаю, что должен вывести созданный узел.
Я попытался настроить узел несколькими способами с разными указателями, хотя я не уверен, как правильно инициализировать 'newnode'.И каждый раз, когда я пытаюсь использовать ввод 'count', такой как 'newnode-> array_length = count;'Я получаю ошибку сегментации, но не понимаю, почему, если в функцию введен счетчик, разве он не может быть использован в этой области?
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<assert.h>
typedef struct node {
struct node* previous;
struct node* next;
int array_length;
int* values;
} node;
//creates a new node with an array large enough to hold `count` values
node* create_node(int count) {
//your code here:
node* newnode;
newnode = (node*) malloc(sizeof(node));
newnode->array_length = count;
newnode->values;
newnode->next=NULL;
newnode->previous=NULL;
return newnode;
}
void append(node* a, node* b) {
assert(a);
assert(b);
a->next = b;
b->previous = a;
}
int main() {
node* a = create_node(10);
assert(a->array_length == 10);
assert(a->next == NULL);
assert(a->previous == NULL);
node* b = create_node(20);
assert(b->array_length == 20);
assert(b->next == NULL);
assert(b->previous == NULL);
append(a, b);
assert(a->next == b);
assert(b->previous == a);
assert(a->previous == NULL);
assert(b->next == NULL);
for(node* cur = a; cur != NULL; cur = cur->next) {
for(int i = 0; i < cur->array_length; i++) {
cur->values[i] = i;
}
}
}
Ошибки компиляции:
problem2.c: In function ‘create_node’:
problem2.c:20:30: warning: implicit declaration of function ‘size’ [-Wimplicit-function-declaration]
newnode->values = malloc(size(int) * count);
^~~~
problem2.c:20:35: error: expected expression before ‘int’
newnode->values = malloc(size(int) * count);
^~~