0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 29
1

Структуры, связные списки

09.04.2014, 18:57. Показов 4812. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пожалуйста помогите разобраться со структурами.
Понял как их задавать и обращаться к ним.

Интересует такая ситуация:
1) есть описание структуры
C
1
2
3
4
5
struct plt{
char name[20];
int age;
struct plt *next;
};
необходимо создать динамический связный список, т. е. подается на вход некое количество N, заранее неизвестное имен и возрастов, необходимо с помощью malloc выделить память, в предыдущую переменную (*next) структуры добавить указатель на ту которую создали.

Так же очень интересно как malloc выделяет память для каждой структуры

Если можно привидите исходный код (с комментариями) который можно скомпилировать и посмотреть работу.

Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2014, 18:57
Ответы с готовыми решениями:

Структуры и связные списки. Нарушение прав доступа при записи
исполняемый файл запускаеться , а когда начинаю вводить данные с клавиатуры выскакует ошибка :...

Связные списки
Почему вылетает ошибка: тут: #include <stdio.h> #include <malloc.h> struct Node { int...

Связные списки: исправить ошибку в коде
#include <stdio.h> #include <stdlib.h> #include <locale.h> struct listNode{ char data;...

Связные списки (?) Отсортировать карточки с названиями мест по первой букве
Есть студенты, есть большое количество карточек, на каторых написаны названия мест, куда их нужно...

1
54 / 54 / 47
Регистрация: 16.03.2014
Сообщений: 110
Записей в блоге: 2
09.04.2014, 20:00 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
struct plt{
    char name[20];
    int age;
    struct plt *next;
};
 
int main(int argc, char *argv[]) {
    struct plt *tmp;       // для промежуточных действий
    struct plt *list_data; // сам список
    
    // преобразовать выходное значение malloc к указателю на структуру
    // входное значение для malloc размер самой структуры
    list_data = (struct plt *)malloc(sizeof(struct plt));
    
    // Задаем первый элемент списка
    strcpy(list_data->name, "Имя 1");
    list_data->age = 20;
    list_data->next = NULL; // Начальный элемент next указывает на NULL
    
    // Выделяем память для следующего элемента списка
    tmp = (struct plt *)malloc(sizeof(struct plt));
    
    strcpy(tmp->name, "Имя 2");
    tmp->age = 30;
    tmp->next = list_data; // next указывает на предыдущий элемент
    
    list_data = tmp; // list_data указывает на последний элемент списка
    
    // Добавить N элементов
    
    tmp = list_data; // для прохода по списку используем промежуточное значеине
                     // дабы не потерять связь с началом списка
    
    // дотех пор пока невстретим указатель на NULL просмотрим список
    while(tmp != NULL) {
        fprintf(stdout, "%s %d\n", tmp->name, tmp->age);
        tmp = tmp->next; // переход к следущему элементу списка
    }
    
    tmp = list_data; // Теперь очистим список
    
    list_data = tmp->next; // list_data указывает на предпоследний элемент списка 
    free(tmp);
    free(list_data);
    
    return EXIT_SUCCESS;
}
Сдорка под Linux

Bash
1
$ gcc -std=c99 -o pname file.c
1
09.04.2014, 20:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2014, 20:00
Помогаю со студенческими работами здесь

Базовые динамические структуры данных. Связные списки
Условие: Циклический односвязный список с барьером (фиктивным элементом). Порядок :FIFO (очередь)...

Связные списки
12. Использовать (линейные) однонаправленные списки без заглавной звена (рис. А) или с заглавной...

Связные списки
Помогите пожалуйста осуществить в программе вот такие вот действия: 1) добавление элементов в...

связные списки
Добрый день. Нужна ваша помощь. Необходимо по кнопке создать связные выпадающие списки....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru