Sie sind auf Seite 1von 6

#include<stdio.

h>

struct node

int from, to;

}a[5], t;

void addEdge(int am[5][5], int i, int j, int in)

int p, q;

a[in].from = i;

a[in].to = j;

for ( p = 0; p <= in; p++)

for (q = p + 1; q <= in; q++)

if (a[p].from > a[q].from)

t = a[p];

a[p] = a[q];

a[q] = t;

else if (a[p].from == a[q].from)

if (a[p].to > a[q].to)

t = a[p];

a[p] = a[q];

a[q] = t;

else

continue;
}

int main()

int n, c = 0, x, y, ch, i, j;

int am[5][5];

printf("Introduceti numarul de virfuri\n");

scanf("%d", &n);

for (i = 0; i < 5; i++)

for (j = 0; j < 5; j++)

am[i][j] = 0;

while (ch != -1)

printf("Introduceti arcurile\n");

scanf("%d%d", &x, &y);

addEdge(am, x, y, c);

c++;

printf("Press -1 to exit\n");

scanf("%d", &ch);

for (j = 0; j < c; j++)

am[a[j].from][j] = 1;

am[a[j].to][j] = 1;

}
for (i = 0; i < n; i++)

for (j = 0; j < c; j++)

printf("%d\t" ,am[i][j]);

printf("\n");

#include<stdio.h>

#include<conio.h>

#define max 20

int adj[max][max];

int n;

main() {

int choice;

int node, origin, destin;

create_graph();

while (1) {

printf("1.Introduceti virful\n");

printf("2.Stergeti virful\n");

printf("3.Prezinta\n");

printf("4.Exit\n");

printf("Introduceti alegerea : ");

scanf("%d", &choice);

switch (choice) {

case 1:

insert_node();

break;
case 2:

printf("Introduceti virful care doriti sa fie sters : ");

fflush(stdin);

scanf("%d", &node);

delete_node(node);

break;

case 3:

display();

break;

case 4:

exit(0);

default:

printf("Alegere gresita\n");

break;

getch();

create_graph() {

int i, max_edges, origin, destin;

printf("Introduceti numarul de virfuri : ");

scanf("%d", &n);

max_edges = n * (n - 1);

for (i = 1; i <= max_edges; i++) {

printf("Introduceti arcul %d( 0 0 ) to quit : ", i);

scanf("%d %d", &origin, &destin);

if ((origin == 0) && (destin == 0))

break;

if (origin > n || destin > n || origin <= 0 || destin <= 0) {


printf("Arc inexistent\n");

i--;

} else

adj[origin][destin] = 1;

display() {

int i, j;

for (i = 1; i <= n; i++) {

for (j = 1; j <= n; j++)

printf("%4d", adj[i][j]);

printf("\n");

insert_node() {

int i;

n++;

printf("Arcul inserat este%d \n", n);

for (i = 1; i <= n; i++) {

adj[i][n] = 0;

adj[n][i] = 0;

void delete_node(char u) {

int i, j;

if (n == 0) {

printf("Graphul este vid\n");

return;

}
if (u > n) {

printf("Acest arc nu e prezent in program\n");

return;

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

for (j = 1; j <= n; j++) {

adj[j][i] = adj[j][i + 1];

adj[i][j] = adj[i + 1][j];

n--;

Das könnte Ihnen auch gefallen