Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*-- tlista.h --- LISTA SIMPLU INLANTUITA cu elemente de tip intreg ---*/
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <time.h>
- #ifndef _LISTA_SIMPLU_INLANTUITA_
- #define _LISTA_SIMPLU_INLANTUITA_
- typedef int TInfo; /* tipurile Element si Adresa_Element */
- typedef struct celula
- { TInfo info;
- struct celula * urm;
- } TCelula, *TLista, **ALista; /* tipurile Celula, Lista si Adresa_Lista */
- #define VidaL(L) ((L) == NULL)
- /*-- operatii elementare --*/
- TLista AlocCelula(TInfo); /* adresa celulei create sau NULL */
- void DistrugeL (ALista); /* elimina toate celulele din lista */
- void AfisareL (TLista L);
- #endif
- //======================
- /*-- functiiLista.c --*/
- #include <ctype.h>
- #include "tlista.h"
- /*--- operatii de baza pentru lista simplu inlantuita ---*/
- TLista AlocCelula(TInfo e) /* adresa celulei create sau NULL */
- { TLista aux = (TLista)malloc(sizeof(TCelula)); /* (1) incearca alocare */
- if (aux) /* aux contine adresa noii celule */
- { aux->info = e; /* (2,3) completeaza noua celula */
- aux->urm = NULL;
- }
- return aux; /* rezultatul este adresa noii celule sau NULL */
- }
- void AfisareL(TLista L)
- /* afiseaza valorile elementelor din lista */
- {
- printf("Lista: ["); /* marcheaza inceput lista */
- for (; L != NULL; L = L->urm) /* pentru fiecare celula */
- printf("%d ", L->info); /* afiseaza informatie */
- printf("]"); /* marcheaza sfarsit lista */
- }
- void DistrugeL(ALista aL)
- {
- TLista aux;
- while(*aL)
- {
- aux = *aL;
- *aL = aux->urm;
- free(aux);
- }
- }
- //===================
- /*--- TestLista.c ---*/
- #include <ctype.h>
- #include <stdio.h>
- #include "tlista.h"
- TLista CitireL(size_t *lg) /* construieste lista cu elemente citite */
- { TLista L = NULL, u, aux;
- TInfo x;
- char ch;
- for(*lg = 0; scanf("%i", &x) == 1; )
- {
- aux = AlocCelula(x); /* incearca inserarea valorii citite */
- if(!aux) return L; /* alocare esuata => sfarsit citire */
- if(L == NULL) L = aux;
- else u->urm = aux;
- u = aux;
- (*lg)++;
- }
- while((ch=getchar()) != EOF && ch != '\n');
- return L; /* intoarce lista rezultat */
- }
- int main ()
- { TLista x = NULL; /* Lista prelucrata */
- size_t lx; /* lungime lista */
- for (;;)
- {
- /* citeste si afiseaza lista */
- printf("\nIntroduceti valori elemente terminate cu valoare nenumerica:\n");
- x = CitireL(&lx);
- AfisareL(x);
- if(!x) continue;
- /* apeluri functii implementate */
- DistrugeL(&x);
- printf ("\n Inca un test ? [d/n]");
- if (getchar() == 'n') break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment