Sunteți pe pagina 1din 3

#include<stdio.

h>
#include<conio.h>
#define MAX_ARCURI 50
#define MAX_VARFURI 20
struct Elem {
int N;
struct Elem * P;
};
typedef Elem* ElemPtr;
typedef int MAdiacenta[MAX_VARFURI] [MAX_VARFURI];
typedef int MIncidenta[MAX_ARCURI] [MAX_VARFURI];
int cd[MAX_VARFURI];
int i;
int all; // variabila va contine numarul de noduri din graf
ElemPtr Pt; // pointer, va fi folosit pentru a accesa elementele listei de
adiacenta
MAdiacenta MA;
MIncidenta MI;
ElemPtr T[MAX_VARFURI]; // declararea listei de adiacenta
// initializarea listei de adiacenta
void InitListAdiacenta(void)
// functia data este folosita pentru initializarea listei
{
int i;
for (i=0; i<MAX_VARFURI; i++)
while (T[i]->N !=0)
{
Pt=T[i];
T[i]=Pt->P;
delete Pt;
}
}
// Introducerea Listei de adiacenta
void InLA(void)
{
int i, top;
printf("Introducerea listei de adiacenta :\n");
printf("Numarul de varfuri :");
scanf("%d",&all); // all = numarul de varfuri
for (i=0; i<all; i++)
{
T[i] = new Elem;
// alocarea in memoriei pentru un nou element al listei
Pt=T[i];
Pt->N =0; // setarea valorii nodului ca 0
printf("varful %d :",i+1);
while (1) // ciclu infinit pana la un break
{
scanf("%d",&top);
// citirea cate un element pana la intalnirea 0;
if (top != 0)
{
Pt->N = top; // adaugarea elementului la lista
Pt->P = new Elem; // alocarea memoriei pentru un nou element
Pt = Pt->P; //avansarea in lista
Pt->N =0; // setarea valorii ca 0
}
else break; // in caz cand intalnim 0 introducerea valorilor pentru
// varful curent ,i ia sfarsit
}
printf("\n");
}
printf("\n");
}
// Introducerea Matricei de adiacenta
void InMA(void)
{
int i, i1;
printf(" Introducerea Matricei de Adiacenta \n");
printf(" Numarul de varfuri : ");
scanf("%d",&all); // numarul de varfuri
for(i=0; i<all; i++)
for(i1=0; i1<all; i1++)
{
MA[i][i1]=0; // curatarea matricei
if (i != i1) // nu certam pentru bucle
{
printf("\n Din varful %d in %d :",i+1,i1+1);
scanf("%d",&MA[i][i1]); //citirea valorii a(i,j)
} }

InitListAdiacenta(); //curatarea listei


for (i=0;i<all;i++)
{
Pt=T[i]; //pregatirea pentru a misca prin lista
for (i1=0;i1<all;i1++)
{
if (MA[i][i1]!=0)
{
Pt->N=i1+1; // settarea valorii nodului current
Pt->P = new Elem;
// alocarea memorie pentru un nou element al listei
Pt=Pt->P; // avansarea
Pt->N=0; //settarea sfarsitului
}
}
}
}
// introducerea matricei de incidenta
void InMI(void)
{
int AllLink;
int i,i1; // variabile contor
int Sr,Tg;
printf("Introducerea matricei de incidenta \n");
printf("Numarul de arcuri : ");
scanf("%d",&AllLink); // citirea numarului de arcuri
printf("\nNumarul de varfuri : ");
scanf("%d",&all); //citirea numarului de varfuri
for (i=0;i<all;i++)
for (i1=0;i1<AllLink;i1++)
{
printf("\nVarful %d si arcul %d ",i+1,i1+1);
scanf("%d",&MI[i][i1]); //citirea elementului dat
}
InitListAdiacenta(); //curatarea listei de adiacenta
for (i=0;i<AllLink;i++)
{
Thank you for using www.freepdfconvert.com service!

Only two pages are converted. Please Sign Up to convert all pages.

https://www.freepdfconvert.com/membership

S-ar putea să vă placă și