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

Матрица смежности - C++

Восстановить пароль Регистрация
 
nikalerka
0 / 0 / 0
Регистрация: 21.11.2010
Сообщений: 77
23.11.2010, 20:12     Матрица смежности #1
есть такая программка. она позволяет построить списки смежности для данного ориентированного графа (вообщем-то матрицу смежности). N - количество вершин графа.

Вопрос: как переделать программу так, чтобы N задавалось пользователем?


#include <iostream.h>
#include <conio.h>
#define N 4
#define TRUE 1
#define FALSE 0

typedef struct zveno *svqz;
typedef struct zveno
{
int Key;
svqz Sled;
} Leader;

class Spisok {
private:
svqz beg[N+1];
svqz res;
void Poisk (svqz,int);
public:
Spisok ();
svqz GetPoisk () { return res; }
void MakeGraph ();
void PrintGraph ();
void AddGraph (int,int);
};

void main ()
{
clrscr();
Spisok A;
int x;
int y;

A.MakeGraph ();
cout<<"predstavlenie grafa spiskami smegnosti\n";
A.PrintGraph (); cout<<endl;
getch();
}

void Spisok::Poisk (svqz uksp,int ment)
{
svqz q;

res = NULL; q = uksp;
while ((q!=NULL)&&(res==NULL))
{ if ((*q).Key==ment) res = q; q = (*q).Sled; }
}

void Spisok::AddGraph (int x,int y)
{
svqz ukzv,uzel;

if (beg[x]!=NULL)
{
Poisk (beg[x],y);
if (GetPoisk()==NULL)
{
uzel = new (Leader);
(*uzel).Key = y; (*uzel).Sled = NULL; ukzv = beg[x];
while ((*ukzv).Sled!=NULL)
ukzv = (*ukzv).Sled;
(*ukzv).Sled = uzel; }
}
else { beg[x] = new (zveno);(*beg[x]).Key = y; (*beg[x]).Sled = NULL; }
}

void Spisok::MakeGraph ()
{
int x,y;

cout<<"vvodite nachalo dygi: "; cin>>x;
cout<<"vvodite konec dygi: "; cin>>y;
while (x!=0)
{
AddGraph (x,y);
cout<< "vvodite nachalo dygi: "; cin>>x;
cout<<"vvodite konec dygi: "; cin>>y;
}
}

void Spisok::PrintGraph ()
{
svqz ukzv;

for (int i=1;i<N+1;i++)
{ cout<<"..."<<i; ukzv = beg[i];

while (ukzv!=NULL) { cout<<(*ukzv).Key; ukzv = (*ukzv).Sled; }
cout<<endl;
}
}

Spisok::Spisok() { for (int i=0;i<N+1;i++) beg[i] = NULL; }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2010, 20:12     Матрица смежности
Посмотрите здесь:

C++ Матрица/связные_списки смежности для ориентированного графа
Матрица смежности C++
Матрица смежности C++
C++ Графы. Гамильтонов Цикл. Матрица смежности
C++ По заданной квадратной матрице из нулей и единиц определите, может ли данная матрица быть матрицей смежности простого неориентированного графа
C++ Дана матрица смежности и неориентированный граф. Выяснить соседствуют ли две вершины с данными номерами с одной общей вершиной
C++ Матрица смежности, ввод через рёбра
C++ Матрица смежности графа - поиск в глубину

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

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

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