Documente Academic
Documente Profesional
Documente Cultură
RAPORT
Lucrare de laborator Nr.2
la Matematica Discreta
Tema:Algoritmul de cautare in adincime
A efectuat:
st. gr. TI
A verificat:
lect. G.Ceban
Chiinu 2015
Scopul lucrrii:
Enuntul problemei:
1. Elaborai procedura cutrii n adncime ntr-un graf arbitrar;
2. Elaborai un program cu urmtoarele posibiliti:
introducerea grafului n calculator,
parcurgerea grafului n adncime,
vizualizarea rezultatelor la display i imprimant.
Listingul programului:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct stack
{
int inf;
struct stack *next;
} stack;
int **saveList(int **graf, int n);
void viewList(int **graf, int n);
void clearMem(int **graf, int n, int *list);
int pushStack(stack *&next, int inf, int l);
int popStack(stack *&next, int &l);
int parGraf(int *&list, int n, int vI, int **graf, stack *st);
int main()
{
int **graf, n, vI, i, opt;
int *list = 0;
stack *st = 0;
FILE *fp;
printf("Introduceti numarul de virfuri ale grafului: ");
scanf("%d", &n);
printf("\nIntroduceti matricea de adiacenta\n\n");
graf = saveList(graf, n);
system("cls");
do
{
system("cls");
printf("
printf("*
*\n");
*\n");
*\n");
*\n");
printf("*
*\n");
{
for(i = 0; i <= k; i++)
{
if(graf[pos][j] != list[i])
{
ind = 0;
}else{
ind = 1;
break;
}
}
if(ind == 0)
{
vI = graf[pos][j];
break;
}
}
if(graf[pos][j] == 0)
{
do
{
vI = popStack(st, l);
if(l == 0)
{
ind = 0;
break;
}
pos = vI - 1;
for(j = 0; graf[pos][j] != 0; j++)
{
for(i = 0; i <= k; i++)
{
if(graf[pos][j] != list[i])
{
ind = 0;
}else{
ind = 1;
break;
}
}
if(ind == 0)
{
vI = graf[pos][j];
break;
}
}
}while(ind != 0);
if(l == 0)
{
ind = 0;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
if(i + 1 == list[j])
{
ind = 0;
break;
}else{
ind = 1;
}
if(ind == 1)
{
vI = i + 1;
break;
}
}
if(k == n)
return 0;
}
}
}
k++;
}while(k != n);
return 0;
}
Concluzie:
In acest laborator neam invatat sa parcurgem un gram in adincime din orice virf a lui.Pentru
aceasta a fost creata o lista cu ahutorul unui vector si o stiva creata cu ajutorul unei liste simplu
inlantuite.Scopul final a fost atins programul se executa fara erori.Prograful salveaza datele intrun fisier text ca utilizator sa poata vizualiza rezultatele obtinute.