2015-06-15 2 views
2
typedef struct { 
    char * fname; 
    char * lname; 
} single_entry; 

Я иду через упражнения, где мы не можем использовать:C Программирование Структуры/Dynamic Mem

single_entry * next; 

Чтобы создать связанный список.

Как я могу выполнить одно и то же без использования связанного списка? Я думаю, что нужно сделать еще одну такую ​​структуру?

typedef struct { 
    single_entry * next; 
} myEntry; 

Как бы это использовать? Я так хорошо знаком со всем, что только в одной структуре.

+0

Вы должны отредактировать свой вопрос, чтобы быть более конкретным. Существует много способов динамического распределения памяти. Является ли дерево считанным связанным списком? Как насчет хеш-таблицы? –

+0

Вы ищете альтернативу связанному списку, например массиву? Или вы ищете другой способ написать связанный список? – abelenky

+1

Другой способ написать связанный список. Без использования следующего в структуре. –

ответ

1
typedef struct 
{ 
    char *fname; 
    char *lname; 
} single_entry; 

typedef struct 
{ 
    single_entry *array; 
    unsigned size, capacity; 
} se_array; 

void initialise(se_array *sarray) 
{ 
    sarray->size = 0; 
    sarray->capacity = 0; 
} 

void add_to_array(se_array *sarray, single_entry entry) 
{ 
    if(sarray->capacity == 0) 
    { 
     sarray->array = malloc(sizeof(single_entry) * (sarray->capacity = 3)); 
     sarray->array[sarray->size++] = entry; 
    } 
    else if(sarray->capacity == sarray->size) 
    { 
    sarray->array = realloc(sarray->array, sizeof(single_entry) * (sarray->capacity *= 1.5)); 
    sarray->array[sarray->size++] = entry; 
    } 
    else 
    { 
    sarray->array[sarray->size++] = entry; 
    } 
} 

int main(void) 
{ 
    se_array my_array; 
    initialise(&my_array); 
    single_entry my_entry; 
    strcpy(my_entry.fname, "first"); 
    strcpy(my_entry.lname, "last"); 
    add_to_array(&my_array, my_entry); 
    my_array.array[0].fname; // element 0 fname 
} 
+0

Итак, теперь удаляем элементы из массива (включая сокращение от начала), имитируя очередь. Примечание: согласно комментарию, OP все еще хочет связанный список. – Olaf

Смежные вопросы