13 / 13 / 10
Регистрация: 01.04.2010
Сообщений: 174
1

Представление графов с помощью связных списков

15.06.2014, 23:43. Показов 2565. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане. Помогите мне пожалуйста. Никак не могу понять как представить граф с помощью связанных списков. Я так понял нужно использовать двунаправленный список.
Что то типо этого.
Ссыль на предыдущий
Вершина или Ребро
Ссыль на следующий.

Но никак не могу представить как это. Ведь из вершины может выходить не одно ребро. И если брать рёбра, то как они буду ссылать на друг друга. Вообщем помогите глупому)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2014, 23:43
Ответы с готовыми решениями:

Создание связных списков
Подскажите как написать программу, которая обычный список трансформирует в связный. def...

Исследование связных списков данных
Пусть дан список студентов. Элемент списка содержит: фамилию, имя, отчество, № курса, № группы,...

Объединение двух связных списков в один
Прога должна считать данные, строки, из командной строки, так мы создадим связный список, а потом...

Программное создание связных выпадающих списков
Здравствуйте! Необходимо по кнопке создать связные выпадающие списки. (1ая ячейка - название...

5
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
16.06.2014, 06:55 2
http://ru.wikipedia.org/wiki/%... A%D0%B0%29
0
13 / 13 / 10
Регистрация: 01.04.2010
Сообщений: 174
16.06.2014, 13:37  [ТС] 3
Ребята. Я немного туповат. Не могу представить в голове как выглядит список. Мозг сыпется просто. Нашёл в инэте код. Вроде то что нужно. Объясните пожалуйста.
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
#include <iostream>
using namespace std;
struct node 
{ 
    int v; 
    node* next; 
    node(int X, node* t) 
    { 
        v = X; next = t; 
    }
};
typedef node *link;
int main() 
{ 
    int i, j; 
    link adj[5]; 
    for (i = 0; i < 5; i++) 
        adj[i]; 
    while (cin>>i>>j) 
    {
        adj[j] = new node(i, adj[j]); 
        adj[i] = new node(j, adj [i]);
    }
}
В частности в цикле for зачем нужно писать adj[i], что-то вроде инициализация списка? В цикле while, я не понимаю что там происходит adj это элемент списка и одновременно ссылка которой присваеваевается Ребро? А как потом добраться до этих рёбер?
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
16.06.2014, 14:18 4
это на тему графы или на тему списки?
0
13 / 13 / 10
Регистрация: 01.04.2010
Сообщений: 174
16.06.2014, 15:41  [ТС] 5
На тему графы. Но нужно сделать через списки. По дурацки звучит конечно.
0
4066 / 3319 / 925
Регистрация: 25.03.2012
Сообщений: 12,496
Записей в блоге: 1
16.06.2014, 15:55 6
Лучший ответ Сообщение было отмечено krvnk как решение

Решение

строй список: каждый элемент вершина графа + список указателей на связанные с ней элементы.
1
16.06.2014, 15:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2014, 15:55
Помогаю со студенческими работами здесь

Моделирование работы банка с использованием связных списков
Не компилится прога, можете посмотреть что нужно сделать? Основная программа program bank;...

Объединение двух связных списков с объектами одного типа
Здравствуйте. При изучении связных списков, написал шаблон для связного списка, с функциями...

Представление графов С++
#include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; int n; int m; vector&lt;int&gt;...

Представление графов С++
Считывания графу из входного файла. На вход подается текстовый файл следующего вида: n m v1 u1...


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

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

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