Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C (СИ) Вычислить значение суммы бесконечного ряда http://www.cyberforum.ru/c-beginners/thread2084358.html
#include <stdio.h> #include <stdlib.h> #include <math.h> #define EPS 1e-6 int main () { double x,a,f; int n=0; printf ("x="); scanf ("%lf",&x);
C (СИ) Вывести строку из файла по вводимому с клавиатуры номеру У меня есть задание, ввести строки в текстовый файл, что я и сделал, и второе задание, это вывести строку из этого файла по вводимому с клавиатуры нами номеру. И вот со 2 частью никак не разберусь,... http://www.cyberforum.ru/c-beginners/thread2084351.html
Дан файл F1, который содержит данные о студентах (фамилия - имя - возраст) C (СИ)
Создать файл F, который будет содержать данные о студентах, имеющий наибольший возраст. Кто знает, помогите с решением данной задачи. Спасибо.
Файлы: выравнивание всех строк до длины максимальной строки (добавление пробелов между словами) C (СИ)
Есть задание и почти готовый код. Задание: Нужно прочитать файл и создать новый на его основе по следующим правилам. Выравнивать все строки до длины максимальной строки путем добавления пробелов...
C (СИ) Скремблирование http://www.cyberforum.ru/c-beginners/thread2084285.html
Помогите пожалуйста. Нужно разработать программу, реализующую работу скремблера и дескремблера согласно варианту. Исходными данными являются: 1) Длина сообщения (10-бит) 2) Последовательность...
C (СИ) Замена первого слов в строке подстрокой Нужно первое слово в строке заменить введённой подстрокой. ТО есть например : Строка: Солнечный дом Замена: Симка Результат: Симка дом Вот я пытался реализовать сие действие #include <stdio.h>... подробнее
Kolya123
0 / 0 / 0
Регистрация: 19.10.2017
Сообщений: 2
0

Топологическая сортировка, ошибка выделения памяти malloc

19.10.2017, 08:32. Просмотров 316. Ответов 0
Метки (Все метки)

Добрый день, товарищи.
Сочиняю топологическую сортировку, сборка проходит удачно, но возникает ошибка на месте:
"nodePointer input = (nodePointer)malloc(sizeof(struct node));".
Ошибка - "Необработанное исключение по адресу 0x777E3B9B (ntdll.dll) в ConsoleApplication2.exe: 0xC0000374: Куча была повреждена (параметры: 0x777FEDD8)."
Не могу понять почему. Буду очень благодарен за помощь.

input.txt
7 10
1 2
1 3
2 3
2 4
3 5
4 6
5 4
5 6
7 3
7 5


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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include<stdio.h>
#include<stdlib.h>
typedef struct node* nodePointer;
struct node
{
    int data;
    nodePointer next;
    nodePointer end;
};
nodePointer list;
nodePointer sort;
int *p;
int *c;
void dfs_visit(int i)
{
    int n;
    c[i] = 1;
    nodePointer temp_dfs;
    if (list[i].next)
    {
        temp_dfs = list[i].next;
        while (temp_dfs->next)
        {           
            if (c[temp_dfs->data] == 0)
            {
                p[temp_dfs->data] = i;
                dfs_visit(temp_dfs->data);
            }
 
            temp_dfs = temp_dfs->next;
        }
        if (c[temp_dfs->data] == 0)
        {
            p[temp_dfs->data] = i;
            dfs_visit(temp_dfs->data);
        }
    }
    c[i] = 2;
    nodePointer input = (nodePointer)malloc(sizeof(*input));
    input->data = i;
    input->next = NULL;
    input->end = NULL;
    if (!sort->next)
    {
        sort->next = input;
        sort->end = input;
    }
    else
    {
        input->next = sort->next;
        sort->next = input;
    }   
}
void dfs(int vertex)
{
    int i;
    for (i = 1; i <= vertex; i++)
    {
        c[i] = 0;
        p[i] = -1;
    }
    for (i = 1; i <= vertex; i++)
    {
        if (c[i] == 0)
            dfs_visit(i);
    }
}
int main()
{
    int vertex, edge, i;
    int head, tail;
    nodePointer curr, temp, temp_sort;
    FILE* f;
    fopen_s(&f, "input.txt", "r");
    fscanf_s(f, "%d %d", &vertex, &edge);
    p = (int *)malloc(sizeof(int) * (vertex + 1));
    c = (int *)malloc(sizeof(int) * (vertex + 1));
    list = (nodePointer)malloc(sizeof(struct node) * (vertex + 1));
    for (i = 1; i <= vertex; i++)
    {
        list[i].data = 0;
        list[i].next = NULL;
        list[i].end = NULL;
    }
 
    for (i = 0; i < edge; i++)
    {
        fscanf_s(f, "%d %d", &head, &tail);
        curr = (nodePointer)malloc(sizeof(struct node));
        curr->data = tail;
        curr->end = NULL;
        curr->next = NULL;
 
        if (!list[head].end)
        {
            list[head].next = curr;
            list[head].end = curr;
        }
        else
        {
            list[head].end->next = curr;
            list[head].end = curr;
        }
    }
 
    for (i = 1; i <= vertex; i++)
    {
        printf("%d ", i);
        temp = &list[i];
        while (temp->next)
        {
            printf("-> %d ", temp->next->data);
            temp = temp->next;
        }
        printf("\n");
    }
    sort = (nodePointer)malloc(sizeof(nodePointer));
    sort->data = 0;
    sort->next = NULL;
    sort->end = NULL;
    dfs(vertex);
    for (i = 1; i <= vertex; i++)
    {
        printf("%d ", p[i]);
    }
    printf("\n");
    temp_sort = sort->next;
    while (temp_sort ->next!= NULL)
    {
        printf("%d ", temp_sort->next->data);
        temp_sort = temp_sort->next;
    }
    return 0;
}


Вернуться к обсуждению:
Топологическая сортировка, ошибка выделения памяти malloc
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2017, 08:32
Готовые ответы и решения:

Malloc ошибка освобождения памяти
ЧЯДНТ? Косяк такой: heap corruption detected before normal block (№0) at 0x... CRT detected...

Ошибка выделения памяти под массив
Есть двумерный массив. Создается он таким образом: int **createArray(int m, int n) { int i,...

Топологическая сортировка на Си!!!!
Народ!Помогите хоть кто-нибудь с курсовой работой на Си!!! Мне нужно сделать программу на тему...

Топологическая сортировка графа
Здравствуйте, у меня есть код сортировки, но он слишком громоздкий, помогите его сделать более...

Распределение памяти для выделения и освобождения блоков памяти внутри запрошенного пула
В программе малые&quot;дыры&quot; избегают,что нужно сделать что бы малые &quot;дыры&quot; не избегались.... #...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru