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

Ориентированный граф. ООП. Ошибка - C++

Восстановить пароль Регистрация
 
onlwork
1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 53
12.03.2014, 17:12     Ориентированный граф. ООП. Ошибка #1
Доброго времени суток. Подскажите пожалуйста, в чем ошибка.

файл list.h
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
#pragma once
 
#include"stdio.h"
 
class ListGraph;
 
template <class T>
class list {
    struct listItem {
        T item;
        listItem *next;
 
        listItem(const T &item, listItem *next = NULL){
            listItem::item = item;
            listItem::next = next;
        }
    };
 
    listItem *first, *last;
    int count;
 
public:
    list(){
        first = last = NULL;
        count = 0;
    }
 
    ~list();
 
    void Add(const T &);
    bool Has(const T &) const;
    bool Remove(T value);
};
 
template <class T>
list<T>::~list(){
    listItem *current = first,
        *prev = NULL;
    while (current){
        prev = current;
        current = current->next;
        delete prev;
    }
}
 
template <class T>
void list<T>::Add(const T & item){
    listItem *newItem = new listItem(item);
    if(last)
        last->next = newItem;
    else
        first = newItem;
 
    last = newItem;
    count++;
 
}
 
template <class T>
bool list<T>::Has(const T & item) const{
    for(listItem *current = first; current; current = current->next){
        if(current->item == item)
            return true;
    }
 
    return false;
}
 
template <class T>
bool list<T>::Remove(T value){
    listItem *prev = 0,
        *current = first;
    while (current){
        if (current->item == value){
            if(prev){
                prev->next = current->next;
            }
            if (current == last){
                last = prev;
            }
            delete current;
            count--;
            return true;
        }
    }
    return false;
}
file ListGraph.h
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
#pragma once
 
#include "graph.h"
#include "list.h"
 
class ListGraph;
 
class ListGraph{
private:
    list<int> *graph;
    int vertexNumber;
 
public:
    ListGraph(int n) : vertexNumber(n), graph(new list<int>[n]){}
 
    ~ListGraph(){
        delete graph;
    }
 
    int countVertex() const{
        return vertexNumber;
    }
 
    void AddArc(char from, char too);
    bool HasArc(char from, char too) const;
    bool DelArc(char from, char too);
};
file ListGraph.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
#include "stdafx.h"
#include "ListGraph.h"
 
 
void ListGraph::AddArc(char from, char too){
    graph[from].Add(too);
}
 
bool ListGraph::HasArc(char from, char too) const{
    return graph[from].Has(too);
}
fie Orgraph.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Orgraph.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "ListGraph.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    ListGraph  lGraph(5);
    //lGraph.AddArc(5,2);
    lGraph.AddArc(1,2);
    lGraph.AddArc(2,2);
    lGraph.AddArc(3,2);
    lGraph.AddArc(4,2);
    if(lGraph.HasArc(1,2)){
        cout<<"werwer";
    }
    return 0;
}
Программа выполняется, но потом вылетает ошибка
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2014, 17:12     Ориентированный граф. ООП. Ошибка
Посмотрите здесь:

Считать граф из файла (граф задан матрицей) представить его в виде списка и записать список заново в файл C++
Структурированный в объектно-ориентированный C++
Объектно-ориентированный C++ и другие языки C++
Объектно-ориентированный анализ и проектирование с примерами приложений C++
C++ ООП Добавляю элемены в очередь, непонятная ошибка
Дан ориентированный граф, нужно на выходе получить матрицу кратчайших путей C++
Задача на ориентированный граф C++
Ориентированный граф. Получить из списка рёбер матрицу смежности C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 18:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru