You are on page 1of 2

/* Operatii asupra Listelor */

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>

struct NOD
{
int cheie;
char info[10];
struct NOD* urm;
};
typedef struct NOD Tnod;
typedef Tnod *ref;

ref prim;
ref q,r,s;
char op;

void ins_prim(void)
{
q=(ref)malloc( sizeof(Tnod) );
printf("Cheia : "); scanf("%d",&q->cheie);
printf("Informatia : "); fflush(stdin); scanf("%s",q->info);
q->urm=NULL;
prim=q;
} /* ins_prim */

void ins_cs(void)
{
s=(ref)malloc( sizeof(Tnod) );
printf("Cheia : "); scanf("%d",&s->cheie);
printf("Informatia : ");
fflush(stdin); scanf("%s",s->info);
s->urm=NULL;
q->urm=s;
q=s;
} /* ins_cs */

void creare(void)
{
char c;
printf("\n");
ins_prim(); /* crearea primului NOD */
printf("Mai adaugati ?! [D/N] : ");
fflush(stdin); scanf("%c",&c); c=toupper(c);
while (c=='D')
{
ins_cs();
printf("Doriti sa mai agaugati ?! [D/N] : ");
fflush(stdin); scanf("%c",&c);
c=toupper(c);
printf("\n");
}
} /* Creare */
void listare(void)
{
r=prim;
while (r!=NULL)
{
printf("Cheia : %d \t | \t ", r->cheie);
printf("Informatia : %s \n",r->info);
r=r->urm;
}
} /* Listare */

void main(void)
{
do
{
clrscr();
printf("\t\t\tOperatii asupra Listelor \n\n ");
printf("\t C - Creare. \n ");
printf("\t A - Adaugare la sfarsitul listei. \n ");
printf("\t L - Listare. \n ");
printf("\t E - Iesire din program. \n\n ");
printf("Introduceti optiunea : ");
fflush(stdin); scanf("%c",&op); op=toupper(op);
switch(op)
{
case 'C': creare();
break;
case 'A': ins_cs();
getch();
break;
case 'L': listare();
getch();
break;
case 'E': break;
default : printf("Optiune necunoscuta !!! ");
getch();
break;
}/* SWITCH */
}while(op!='E');
} /* MAIN */

You might also like