Форум программистов, компьютерный форум CyberForum.ru

Динамический список, беглый указатель - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить программу, моделирующую заполнение гибкого магнитного диска http://www.cyberforum.ru/cpp-beginners/thread869643.html
Составить программу, моделирующую заполнение гибкого магнитного диска. Общий объем памяти на диске 360 Кбайт. Файлы имеют произвольную длину от 18 байт до 32 Кбайт. В процессе работы файлы либо записываются на диск, либо удаляются с него. В начале работы файлы записываются подряд друг за другом. После удаления файла на диске образуется свободный участок памяти, и вновь записываемый файл либо...
C++ Алгоритмы на графах может кто может подсказать: как работать со списком рёбер для реализации алгоритмов для поиска расстояний в графе? http://www.cyberforum.ru/cpp-beginners/thread869637.html
C++ Сравнение C++ с С#
Какие существенные достоинства и недостатки C++ есть по сравнению с C# ?
getline работа с файлами C++
Читаю книгу: философия с++ и там есть некий пример работы с файлами:#include <string> #include <fstream> #include <iostream> using namespace std; int main() { ifstream in ("test.txt"); string s. line;
C++ Задачка,структура,найти самого отстающего студента http://www.cyberforum.ru/cpp-beginners/thread869623.html
вот задачка , вводиш 10 фамилий и по 1 отценке , а как сделать чтобы вводить 5 фамилий и по 3 оценки каждому. #include<iostream.h> #include<math.h> void main() { struct suny { char familia; int ocenky; }A;
C++ вставка и удаление в древо бинарного поиска (ошибка: invalid conversion from 'int' to 'int*') Здравствуйте. Подскажите почему ошибка? ошибка: invalid conversion from 'int' to 'int*' #include <iostream> #include <stdio.h> #include <time.h> #include <stdlib.h> using namespace std; typedef int T; // тип элемента подробнее

Показать сообщение отдельно
Utkin53
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 25
18.05.2013, 22:17  [ТС]     Динамический список, беглый указатель
Как-то так
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
#include <iostream>
#include <conio.h>
using namespace std;
struct sp
{
    int nomer;
    int versh[15];
    int kolvo;
    sp *up,*next;
};
sp *begin=NULL,*last=NULL;//объявляю переменные
sp *add (sp *begin,sp *last) //объявление, загрузка переменных для работы
{
    FILE *fi;
    int n,l,nm,kl=0,u=0,j; 
    sp *list=NULL,*up=NULL;
    fi=fopen ("f_in.txt","rt");
    fscanf (fi,"%d",&n);
    for (l=0;l<n;l++)
    {
        list=new sp;
        if(begin==NULL)
        {
            begin=list;
        }
        list->up=up;
        fscanf (fi,"%d",&nm);
        list->nomer=nm;
        for (j=0;j<10;j++)
        {
            fscanf (fi,"%d",&u);
            if (u==-1)
                break;
            list->versh[j]=u;
            kl=kl+1;
        }
        list->kolvo=kl;
        kl=0;
        if(up!=NULL)
        {
            up->next=list;
        }
        up=list;
    }
    last=list;//здесь он ещё определён
    list->next=NULL;
    return begin;//примерно так я передал указатель на начало, возможно здесь проблема
}
 
void print (sp *begin,sp *list)//вывод списка
{
    int j;
    list=begin;
    while (list)
    {
        cout<<"\n nomer vershini "<<list->nomer<<"\tkolvo  "<<list->kolvo;
        cout<<"\tokrest ";
        for(j=0;j<list->kolvo;j++)
        {
            cout<<list->versh[j]<<" ";
        }
        list=list->next;
    }
}
sp* search (sp *begin,sp *list,sp *last) //функция, куда надо передать этот last
{
    sp *max=NULL;
    int maxi=0;
    list=begin;
    while (list)
    {
        if (list->kolvo>maxi)
        {
            max=list;
            maxi=list->kolvo;
        }
        list=list->next;
    }
    cout<<"\n max kolvo"<<max->kolvo;
    list=max;
        if(list==begin)
    {
        begin=list->next;
    }
    else
    {
        if (list!=last)
        {
        list=list->up;
        list->next=list->next->next;
        list->next->up=list;
        }
        else
        {
            last=list->up;
        }
    }
    return begin;
}
void main (sp *begin,sp *list,sp *last)
{
    begin=add (begin,last);//определение указателя на начало 
    print (begin,list);
    begin=search (begin,list,last);
    print (begin,list);
    getch ();
}
и программа благополучно вылетает
 
Текущее время: 11:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru