Sunteți pe pagina 1din 11

LABORATOR 5 TEMA 1

1. Enunt
Scrieti programul C care permite efectuarea tuturor operatiilor cu lista liniara simplu inlantuita cu inserare in fata si spate.

2. Analiza problemei 3. Programele sursa


//Operatii (cunoscute pana acum)asupra unei liste liniare s.i. //cand crearea se face cu inserare in fata si primul nod este //creat separat #include #include #include #include #include <stdio.h> <ctype.h> <conio.h> <alloc.h> <string.h>

struct nod { int cheie; char info[10]; struct nod *urm; }; typedef struct nod nod; typedef nod* ref; ref p!"!r!s; char op!rasp; int #; void ins_p(void) { "$malloc%si&eof% nod''; printf%()ntroduceti cheia$ (';scanf%(*d(!+",>cheie'; printf%()ntroduceti informatia$ ('; fflush%stdin';scanf%(*s(!",>info'; ",>urm$-.//; p$"; }0*ins1p*0 void ins_cf(void) { s$malloc%si&eof% nod''; printf%()ntroduceti cheia$ (';scanf%(*d(!+s,>cheie';

printf%()ntroduceti informatia$ ('; fflush%stdin';scanf%(*s(!s,>info'; s,>urm$p; p$s; }0*ins1cf*0 void listare(void) { if%p$$-.//' printf%(/ista 2ida34n('; else { printf%(5lementele listei sunt64n('; r$p; 7hile %r3$-.//' { printf%(cheia$*d info$*s4n(!r,>cheie!r,>info'; r$r,>urm; }0*7hile*0 } }0*listare*0 void ins_d(void) { s$malloc%si&eof% nod''; printf%()ntroduceti cheia$ (';scanf%(*d(!+s,>cheie'; printf%()ntroduceti informatia$ ('; fflush%stdin';scanf%(*s(!s,>info'; s,>urm$r,>urm; r,>urm$s; if %s,>urm$$-.//' "$s; }0*ins1d*0 void ins_i(void) { s$malloc%si&eof% nod''; *s$*r; r,>urm$s; printf%()ntroduceti cheia$(';scanf%(*d(!+r,>cheie'; printf%()ntroduceti informatia$('; fflush%stdin';scanf%(*s(!r,>info'; if %s,>urm$$-.//' "$s; }0*ins1i*0 void cautare(int k) { int 8$0; r$p; 7hile %%8$$0'++%r3$-.//'' if %r,>cheie$$#' 2

8$1; else r$r,>urm; }0*cautare*0 void adaugare_i(void) { ins1cf%'; }0*adaugare1i*0 void sterge_d(void' { if%r,>urm$$-.//' printf%(-u se poate suprima33 9r9 este ultimul -:; 33 ('; else { s$r,>urm; r,>urm$s,>urm; free%s'; } } 0* <terge1; *0 void sterge_n(void) { if%r,>urm$$-.//' if%r$$prim' { prim$-.//; free%prim'; } else { s$prim; 7hile%s,>urm3$r' s$s,>urm; s,>urm$-.//; free%s'; } else { s$r,>urm; *r$*s; free%s'; } } 0* <terge1- *0 void creare(void) { char c; printf%()ntroduceti primul nod 6 4n('; ins1p%'; listare%'; printf%(=ai introduceti alte noduri %;0-'>6 ('; 3

fflush%stdin';scanf%(*c(!+c';c$toupper%c'; 7hile %c$$9;9' { ins1cf%'; listare%'; printf%(=ai introduceti alte noduri %;0-'>6 ('; fflush%stdin';scanf%(*c(!+c';c$toupper%c'; }0*7hile*0 }0*creare*0 void main(void) { p$-.//; do { clrscr%'; printf%(:p. asupra l.l.s.i. cu inserare fata4n4n('; printf%(? , ?reare4n('; printf%(/ , /istare4n('; printf%(@ , @daugare inaintea listei4n('; printf%() , )nserare dupa un nod dat4n('; printf%(A , )nserare inaintea unui nod dat4n('; printf%(B , ?autare4n('; printf%(; , <tergerea unui -:; dupa un -:; dat. 4n( '; printf%(- , <tergerea unui -:; dat. 4n('; printf%(5 , erminare4n4n('; printf%()ntrodu optiunea6('; fflush%stdin';scanf%(*c(!+op'; op$toupper%op'; s7itch %op' { case 9?96 if %p3$-.//' { printf%(4n/ista eCista3 ;oriti sa D'; printf%(creati lista noua>%d4n'('; fflush%stdin';scanf%(*c(!+rasp'; rasp$toupper%rasp'; if %rasp3$9;9' 8rea#; } creare%'; 8rea#; case 9/96 8rea#; case 9@96 adaugare1i%'; 8rea#; case 9)96 if %p3$-.//' { printf%(;ati cheia nod. dupa care ('; printf%(inseram64n('; scanf%(*d(!+#'; cautare%#'; if %r3$-.//' ins1d%'; 4

}; 8rea#; case 9A96 if %p3$-.//' { printf%(;ati cheia nod. in fata ('; printf%(caruia inseram64n('; scanf%(*d(!+#'; cautare%#'; if %r3$-.//' ins1i%'; else printf%(-odul cu cheia *d nu ('; printf%(eCista in lista34n(!#'; }; 8rea#; case 9B96 if %p3$-.//' { printf%(;ati cheia nod. ?autat 6 4n('; scanf%(*d(!+#'; cautare%#'; if %r3$-.//' printf%(-odul cu cheia *d are ('; printf%(informatia *s 4n(!r,>cheie! r,>info'; else printf%(-odul cu cheia *d nu ('; printf%(eCista in lista34n(!#'; }; 8rea#; case 9;9 6 if%prim$$-.//' printf%(5EE:E. /ista este 2ida 333 ('; else { printf%(;ati cheia -:;,ului ('; printf%(dupa care stergeti('; scanf%(*d(! +#'; cautare%'; sterge1d%'; } 8rea#; case 9-9 6 if%prim$$-.//' printf%(5EE:E. /ista este 2ida 333 ('; else { printf%(;ati cheia -:;,ului ('; printf%(pe care inserati 6 ('; scanf%(*d(! +#'; cautare%'; 5

else printf%(-odul cu cheia *d nu ('; printf%(eCista in lista34n(!#';

sterge1n%'; } 8rea#; case 9596 8rea#; default6 printf%(:ptiunea aleasa este gresita34n('; }0*s7itch*0 listare%'; printf%( astati enter34n('; getch%'; }7hile %op3$959'; }0*main*0

//Operatii (cunoscute pana acum)asupra unei liste liniare s.i. //cand crearea se face cu inserare in spate si primul nod este //creat separat #include #include #include #include #include <stdio.h> <ctype.h> <conio.h> <alloc.h> <string.h>

struct nod { int cheie; char info[10]; struct nod *urm; }; typedef struct nod nod; typedef nod* ref; ref p!"!r!s; char op!rasp; int #; void ins_p(void) { "$malloc%si&eof% nod''; printf%()ntroduceti cheia$ (';scanf%(*d(!+",>cheie'; printf%()ntroduceti informatia$ ('; fflush%stdin';scanf%(*s(!",>info'; ",>urm$-.//; p$"; }0*ins1p*0 void ins_cs(void) { r$malloc%si&eof% nod''; printf%()ntroduceti cheia$ (';scanf%(*d(!+r,>cheie'; printf%()ntroduceti informatia$ ('; 6

fflush%stdin';scanf%(*s(!r,>info'; r,>urm$-.//; "$r; }0*ins1cs*0 void listare(void) { if%p$$-.//' printf%(/ista 2ida34n('; else { printf%(5lementele listei sunt64n('; r$p; 7hile %r3$-.//' { printf%(cheia$*d info$*s4n(!r,>cheie!r,>info'; r$r,>urm; }0*7hile*0 } }0*listare*0 void ins_d(void) { s$malloc%si&eof% nod''; printf%()ntroduceti cheia$ (';scanf%(*d(!+s,>cheie'; printf%()ntroduceti informatia$ ('; fflush%stdin';scanf%(*s(!s,>info'; s,>urm$r,>urm; r,>urm$s; if %s,>urm$$-.//' "$s; }0*ins1d*0 void ins_i(void) { s$malloc%si&eof% nod''; *s$*r; r,>urm$s; printf%()ntroduceti cheia$(';scanf%(*d(!+r,>cheie'; printf%()ntroduceti informatia$('; fflush%stdin';scanf%(*s(!r,>info'; if %s,>urm$$-.//' "$s; }0*ins1i*0 void cautare(int k) { int 8$0; r$p; 7hile %%8$$0'++%r3$-.//'' if %r,>cheie$$#' 8$1; 7

else r$r,>urm; }0*cautare*0 void adaugare_i(void) { ins1cs%'; }0*adaugare1i*0 2oid sterge1d%2oid' { if%r,>urm$$-.//' printf%(-u se poate suprima33 9r9 este ultimul -:; 33 ('; else { s$r,>urm; r,>urm$s,>urm; free%s'; } } 0* <terge1; *0 2oid sterge1n%2oid' { if%r,>urm$$-.//' if%r$$prim' { prim$-.//; free%prim'; } else { s$prim; 7hile%s,>urm3$r' s$s,>urm; s,>urm$-.//; free%s'; } else { s$r,>urm; *r$*s; free%s'; } } 0* <terge1- *0 void creare(void) { char c; printf%()ntroduceti primul nod 6 4n('; ins1p%'; listare%'; printf%(=ai introduceti alte noduri %;0-'>6 ('; fflush%stdin';scanf%(*c(!+c';c$toupper%c'; 8

7hile %c$$9;9' { ins1cs%'; listare%'; printf%(=ai introduceti alte noduri %;0-'>6 ('; fflush%stdin';scanf%(*c(!+c';c$toupper%c'; }0*7hile*0 }0*creare*0 void main(void) { p$-.//; do { clrscr%'; printf%(:p. asupra l.l.s.i. cu inserare fata4n4n('; printf%(? , ?reare4n('; printf%(/ , /istare4n('; printf%(@ , @daugare inaintea listei4n('; printf%() , )nserare dupa un nod dat4n('; printf%(A , )nserare inaintea unui nod dat4n('; printf%(B , ?autare4n('; printf%(; , <tergerea unui -:; dupa un -:; dat. 4n( '; printf%( - , <tergerea unui -:; dat. 4n('; printf%(5 , erminare4n4n('; printf%()ntrodu optiunea6('; fflush%stdin';scanf%(*c(!+op'; op$toupper%op'; s7itch %op' { case 9?96 if %p3$-.//' { printf%(4n/ista eCista3 ;oriti sa D'; printf%(creati lista noua>%d4n'('; fflush%stdin';scanf%(*c(!+rasp'; rasp$toupper%rasp'; if %rasp3$9;9' 8rea#; } creare%'; 8rea#; case 9/96 8rea#; case 9@96 adaugare1i%'; 8rea#; case 9)96 if %p3$-.//' { printf%(;ati cheia nod. dupa care ('; printf%(inseram64n('; scanf%(*d(!+#'; cautare%#'; if %r3$-.//' ins1d%'; 9

}; 8rea#; case 9A96 if %p3$-.//' { printf%(;ati cheia nod. in fata ('; printf%(caruia inseram64n('; scanf%(*d(!+#'; cautare%#'; if %r3$-.//' ins1i%'; else printf%(-odul cu cheia *d nu ('; printf%(eCista in lista34n(!#'; }; 8rea#; case 9B96 if %p3$-.//' { printf%(;ati cheia nod. ?autat 6 4n('; scanf%(*d(!+#'; cautare%#'; if %r3$-.//' printf%(-odul cu cheia *d are ('; printf%(informatia *s 4n(!r,>cheie! r,>info'; else printf%(-odul cu cheia *d nu ('; printf%(eCista in lista34n(!#'; }; 8rea#; case 9;9 6 if%prim$$-.//' printf%(5EE:E. /ista este 2ida 333 ('; else { printf%(;ati cheia -:;,ului ('; printf%(dupa care stergeti 6 ('; scanf%(*d(! +#'; cautare%'; sterge1d%'; } 8rea#; case 9-9 6 if%prim$$-.//' printf%(5EE:E. /ista este 2ida 333 ('; else { printf%(;ati cheia -:;,ului ('; printf%(pe care inserati 6 ('; scanf%(*d(! +#'; cautare%'; 10

else printf%(-odul cu cheia *d nu ('; printf%(eCista in lista34n(!#';

sterge1n%'; } 8rea#; case 9596 8rea#; default6 printf%(:ptiunea aleasa este gresita34n('; }0*s7itch*0 listare%'; printf%( astati enter34n('; getch%'; }7hile %op3$959'; }0*main*0 4. Observaii: n ceea ce prive te crearea unei liste liniare simplu !nl"n#uite tre$uie tiut faptul c" structura tre$uie ini#iali%at" !nainte &e a se efectua orice opera#ii asupra ei.'ni#iali%area listei se poate face cree(n& primul no& al listei.

11

S-ar putea să vă placă și