2013-05-23 3 views
0

Так что я пытаюсь сделать массив связанных списков, сначала я имел следующий код:динамически выделять массив связанных списков

typedef struct node{ 
    int data; 
    struct node *next; 
} node; 

struct ko { 
    struct node *first; 
    struct node *last; 
} ; 

struct ko array[6]; 

с этим кодом остальной частью программы работает нормально, однако , я хотел бы, чтобы пользователь имел возможность определить размер массива при запуске программы, после некоторых исследований я считаю, что это должно быть что-то вроде этого:

заголовочного файл

typedef struct node{ 
    int data; 
    struct node *next; 
} node; 



struct ko { 
    struct node *first; 
    struct node *last; 
} ; 

struct ko *array; 

main.cf Ил:

int size; 
printf("array size: "); 
scanf("%d", &size); 
array = malloc(sizeof(struct ko) * size); 

С помощью этого кода программы компилируется нормально, но она просто застревает, когда он работает, он не ломается, она просто ничего не делать ... Так что, если проблема задается находится в этом коде или в другом месте в программе. спасибо

+1

ли программа застрял на зсапЕ («% D», &size); – akhil

+2

Можете ли вы предоставить больше контекста Какой код у вас есть после того, как 'malloc' Что вы имеете в виду застрял – srikanta

+0

не ваш вопрос, но:??, Если вы "typedef struct node {...} node;" тогда вы должны использовать «node * first;». Если вы назовете своего ребенка «kleiner», это очень запутанно для всех остальных, когда вы называете его «эй дю». : в другом месте –

ответ

0

Ну, здесь ничего плохого нет. Просто убедитесь, что нулевое инициализация содержимого массива (фактически 100% портативный способ с for но с использованием calloc() работает на всех обычных платформах).

0

В программе есть только одна ошибка, malloc возвращает void *, вам нужно набрать case it (struct ko *). Кроме того, я не вижу никакой ошибки. Я также проверил ту же программу в VS. он работает нормально.

+0

Неправильно: на C вам не нужно указывать возврат из 'malloc()', и многие эксперты настоятельно рекомендуют против этого по различным причинам. –