You are on page 1of 7

/* Operatii asupra Listei Liniare Simplu Inlantuite */

#include <stdio.h>

#include <alloc.h>

#include <conio.h>

#include <ctype.h>

struct NOD

int cheie;

char info[10];

struct NOD *urm;

};

typedef struct NOD Tnod;

typedef Tnod * ref;

int k;

char c;

ref prim;

ref q,r,s;

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 cauta(void)

int b=0;

r=prim;

while(b==0 && r!=NULL)

if(r->cheie==k)

b=1;

else r=r->urm;

} /* Cauta */

void ins_cs(void)

r=(ref)malloc( sizeof(Tnod) );

printf("Cheia : "); scanf("%d", &r->cheie);

printf("Informatia : "); fflush(stdin); scanf("%s", r->info);

r->urm=NULL;

q->urm=r;

q=r;

} /* ins_cs */
void creare(void)

char c;

ins_p();

q=prim;

printf("Mai adaugati elemente ?! [D/N] : ");

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

while(c=='D')

ins_cs();

printf("Mai adaugati ?! [D/N] : ");

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

} /* Creare */

void ins_d(void)

s=(ref)malloc( sizeof(Tnod) );

printf("Cheia : "); scanf("%d", &s->cheie);

printf("Informatia : "); fflush(stdin); scanf("%s", s->info);

s->urm=r->urm;

r->urm=s;

} /* Inserare dupa */
void ins_i(void)

s=(ref)malloc( sizeof(Tnod) );

*s=*r;

r->urm=s;

printf("Cheie : "); scanf("%d", &r->cheie);

printf("Info : "); fflush(stdin); scanf("%s", r->info);

} /* Inserare inainte */

void listare(void)

if(prim==NULL)

printf("Lista este vida !!\n");

else

r=prim;

while(r!=NULL)

printf("Cheia : %d \t | \t", r->cheie);

printf("Informatia : %s \n", r->info);

r=r->urm;

} /* Listare */
int main()

prim=NULL;

do

clrscr();

printf("\t\tOperatii asupra Listei Liniare Simplu Inlantuite\n\n");

printf("\t C-Creare. \n");

printf("\t F-Cautarea unui NOD. \n");

printf("\t I-Inserare dupa. \n");

printf("\t B-Inserare inainte. \n");

printf("\t L-Listare. \n");

printf("\t E-Iesire!! \n\n");

printf("Introdu optiunea : ");

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

switch(c)

case 'C': creare();

break;

case 'L': listare();

break;

case 'I': if(prim==NULL)

printf("ERROR. Lista e VIDA !! ");

else

{
printf("Introduceti cheia nodului dupa care ins. : ");

scanf("%d", &k);

cauta();

if(r==NULL)

printf("Nu exista nodul cu cheia data !! \n");

else ins_d();

break;

case 'F': if(prim==NULL)

printf("ERROR. Lista este VIDA !! ");

else

printf("Introduceti cheia NOD-ului cautat : ");

scanf("%d", &k);

cauta();

if(r==NULL )

printf("Nu s-a gasit NOD-ul cu cheia data !! \n");

else

printf("Cheia : %d \t | \t ", r->cheie);

printf("Informatia: %s \n", r->info);

case 'B': if(prim==NULL)

printf("ERROR. Lista este VIDA !! ");


else

printf("Introduceti cheia NOD-ului : ");

scanf("%d",&k);

cauta();

if(r==NULL)

printf("Nu exista nodul cu cheia data !! \n");

else ins_i();

break;

case 'E': break;

default : printf("Optiune Eronata !!! \n");

break;

getch();

}while(c!='E');

return 0;

} /* MAIN */

You might also like