Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Scrieti programul C care permite crearea si vizualizarea sub forma naturala a unui graf implementat prin structuri de adiacente-varianta multilista

c


Scrieti programul C care permite crearea si vizualizarea sub forma naturala a unui graf implementat prin structuri de adiacente-varianta multilista. (graf neorientat).

Tema2: Scrieti programul C care permite crearea si vizualizarea sub forma naturala a unui graf implementat prin structuri de adiacenta-varianta multilista. (graf orientat).



Descriere algoritm

O alta alternativa de impleme 959j98j ntare a structurilor de adiacente se bazeaza pe structure multiinlantuite. Astfel, o structura de adiacente este de fapt o lista inlantuita a nodurilor grafului. Pentru fiecare nod al acestei liste se pastreaza o lista a arcelor, respective o lista inlantuita a cheilor nodurilor adiacente.

In consecinta, fiecare nod al listei nodurilor va contine doua inlantuiri, una indicand nodul urmator, cealalta, lista nodurilor adiacente.

Observatie Implementarea prin structura multilista cand nodurile grafului sunt denumite prin cate o litera, iar informatia despre nod este tot de tipul character.

Se face precizarea ca valorile aferente nodurilos sunt pastrate integral in lista de noduri. In lista de arce apar numai cheile. Desigur, este posibil sa lipseasca campul “info” si deci TipElem=TipCheie.

Insertia unui nod se va realize simplu, la inceputul listei nodurilor.

Inserarea arcului (x,y) presupune insertia lui x in lista de adiacente a lui y si reciproc. Si in acest caz insertia se realizeaza cel mai simplu la inceputul listei.

Suprimarea arcului precizat de IndiceArc presupune extragerea a doua noduri din doua liste de adiacente diferite. IndiceArc contine doi pointeri v1 si v2m care indica doua noduri in lista de noduri.

In vedera suprimarii arcului care le conecteaza este necesar ca fiecare nod in parte sa fie suprimat din lista de adiacente a celuilalt.

Functia SuprimaArc realizeaza suprimarea arcului precizat de variabila IndiceArc.

Functiile CautaAdi si SuprimaNod sunt si ele realizate in termenii setului de operatori aplicabili obiectelor de tip lista lniara simplu inlantuita.

Rezolvare:

Tema1:Scrieti programul C care permite crearea si vizualizarea sub forma naturala a unui graf implementat prin structuri de adiacente-varianta multilista. (graf neorientat).

#include <stdio.h>

#include <ctype.h>

#include <conio.h>

#include <graphics.h>

#include <stdlib.h>

#include <math.h>

#define NrMax 10

#define pi 2*asin(1)

#define r 15

#define R 150

typedef char TipCheie;

typedef char TipInfo;

typedef struct elem

TipElem;

typedef struct adi

Tadi;

typedef Tadi *pointAdi;

typedef struct nod

Tnod;

typedef Tnod *pointNod;

typedef pointNod Graf;

typedef struct arc

TipArc;

Graf g;

TipArc IndiceArc;

pointNod IndiceNod;

TipElem e;

int n,x0,y0;

void initializare_mod_grafic(void)

}//initializare

int index(Graf g, TipCheie c)

if(b==1)

return i;

else return -1;

}//index

int NrNoduri(Graf g)

return n;

}//nrNoduri

void desenareNoduri(Graf g)

pointNod q;

x0=getmaxx()/2+100;

y0=getmaxy()/2;

n=NrNoduri(g);

if(n>0)

}

else printf('Graful este vid!n');

}//desenareNoduri

void deseneazaGraf(Graf g)

q=q->urmNod;

}//for i

}

}//desenareGraf

pointAdi CautaAdi(pointAdi Ly, TipCheie x)

//CautaAdi

void SuprimaNodAdi(pointAdi Ax, pointAdi *Ly)

else

else

}//SuprimaNodAdi

void SuprimaArc(TipArc IndiceArc)

}//SuprimareArc

void InserNodGraf(TipElem e, Graf *g)

//InserNodGraf

void InserNodAdi(TipCheie x, pointAdi *Ly)

//inserNodAdi

void InserArc(TipArc IndiceArc)

//InserArc

pointNod CautaNod(Graf g, TipCheie x)

//CautaNod

void SuprimaLAdi(pointNod IndiceNod, Graf *g)

}//SyprimaLAdi

void SuprimaNod(pointNod IndiceNod, Graf *g)

else

else

}//SuprimaNod

void creare(Graf *g)

}

else printf('Nod eronat!n');

printf('Doriti sa mai introduceti un nod? (D/N): ');

fflush(stdin); scanf('%c',&rasp); rasp=toupper(rasp);

}//endwhile

initializare_mod_grafic();

desenareNoduri(*g);

printf('Doriti sa introduceti un arc?(D/N): ');

fflush(stdin); scanf('%c',&rasp); rasp=toupper(rasp);

while(rasp=='D')

//whie p

}//for i

}

}

printf('Doriti sa introduceti un nou arc?(D/N): ');

fflush(stdin); scanf('%c',&rasp); rasp=toupper(rasp);

}//while

closegraph();

}//creare

void main(void)

creare(&g);

break;

case 'V': initializare_mod_grafic();

deseneazaGraf(g);

printf('Tastati Enter!n');

getch();

closegraph();

break;

case 'D': if(g!=NULL)

else printf('Graful este vid!n');

break;

case 'S': if(g!=NULL)

else printf('Graful este vid!n');

break;

case 'E': break;

default: printf('Ati introdus optiune gresita!n');

}

printf('Tastati un caracter:n');

getch();

}while(rasp!='E');

}//main

Rezolvare:

Tema2: Scrieti programul C care permite crearea si vizualizarea sub forma naturala a unui graf implementat prin structuri de adiacenta-varianta multilista. (graf orientat).

#include<stdio.h>

#include<graphics.h>

#include<conio.h>

#include<stdlib.h>

#include<math.h>

#include<ctype.h>

#include<alloc.h>

#define CALE 'C:BorlandCBGI'

#define R 200

#define r 15

#define maxN 10

#define pi M_PI

typedef int TipCheie;

typedef char TipInfo;

typedef struct elem

TipEl;

typedef struct adi

Tadi;

typedef Tadi * PointAdi;

typedef struct nod

Tnod;

typedef Tnod * PointNod;

typedef struct arc

TipArc;

typedef PointNod graf;

graf g;

TipArc IndiceArc;

PointNod IndiceNod;

char c1,c2,e,c;

int x,y,i,j,n;

PointAdi z,v,q;

double x0, y0, xi,yi,xj,yj,x1,y1,x2,y2,x3,y3,Alfa,Alfa1,Alfa2;

void InitModGrafic(void)

int Index(TipCheie x)

if(b==1) return i;

else return -1;

}

int NrNoduri(graf g)

return k;

}

void InserNodG(graf *g)

else printf('Nod eronatn');

void InserNodA(TipCheie x, PointAdi *Ly)

PointNod Cauta (graf g, TipCheie x)

void InserArc(TipArc IndiceArc)

void DesenareNoduri(int n)

PointNod q;

q=g;

for(i=0; i<=n-1; i++)

setcolor(WHITE);

void TraseazaArc(int i,int j)

void DesenareGraf(void)

q=q->UrmNod;

}

void InserareArc(void)

else printf('eroare: vf arcului');

}

else printf('eroare: coada arcului');

}//InserareArc

void Creare(void)

InitModGrafic();

DesenareNoduri(n);

//Introducerea arcelor

printf('Introduceti arc? ');

fflush(stdin);scanf('%c',&c);c=toupper(c);

while(c=='D')

}

printf('Mai introduceti arc? ');

fflush(stdin);scanf('%c',&c);c=toupper(c);

} //while

PointNod CautaNod(graf g, TipCheie x)

//CautaNod

void SuprimaNodAdi(PointAdi Ax, PointAdi *Ly)

else

else

}//SuprimaNodAdi

PointAdi CautaAdi(PointAdi Ly, TipCheie x)

//CautaAdi

void SuprimaArc(TipArc IndiceArc)

}//SuprimareArc

void main (void)

}

else printf('Graful este vid!n');

break;

case 'E':break;

default: printf('Ati introdus optiune eronata! n');

break;

}

printf('Tastati Enter!n');getch();

} while (op != 'E');

getch();

closegraph();

} //main



Document Info


Accesari: 617
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )