Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct Element
- {
- int val;
- struct Element* next;
- }Element;
- typedef Element* List;
- List init(int val)
- {
- List lista;
- lista = (Element *) malloc(sizeof(Element));
- lista->val = val;
- lista->next = NULL;
- return lista;
- }
- /*
- //recursiv
- List append(List l, int val)
- {
- List temp, aux;
- aux = l;
- temp = (Element *) malloc(sizeof(Element));
- temp->val = val;
- temp->next = NULL;
- if(aux != NULL)
- {
- aux=aux->next;
- return append(aux, val);
- }
- if(aux == NULL)
- {
- aux->next = temp;
- return l;
- }
- }*/
- List append(List l, int val)
- {
- List aux;
- if(l == NULL)
- {
- aux = (Element *) malloc(sizeof(Element));
- aux->val = val;
- aux->next = NULL;
- return aux;
- }
- else
- {
- if(l->next==NULL)
- {
- l->next=init(val);
- return l;
- }
- else
- {
- l->next = append(l->next, val);
- return l;
- }
- }
- }
- //recursiv
- /*void print(List l)
- {
- if(l != NULL)
- {
- printf("%d ", l->val);
- l = l->next;
- print(l);
- }
- else
- {
- printf("\n");
- }
- }*/
- //iterativ
- void print(List l)
- {
- while(l != NULL)
- {
- printf("%d ", l->val);
- l = l->next;
- }
- printf("\n");
- }
- int len(List l)
- {
- if(l == NULL)
- return 0;
- else
- {
- l=l->next;
- return 1+len(l);
- }
- }
- List prepend(List l, int val)
- {
- List temp;
- temp = (Element *) malloc(sizeof(Element));
- temp->val = val;
- temp->next = l;
- l = temp;
- return l;
- }
- List delLast(List l)
- {
- List temp;
- temp = l;
- while(temp->next->next != NULL)
- {
- temp = temp->next;
- }
- temp->next = NULL;
- return l;
- }
- List delFirst(List l)
- {
- if(l != NULL)
- {
- l=l->next;
- }
- else
- {
- l = NULL;
- }
- return l;
- }
- int ultimulElement(List l)
- {
- int ultim;
- while(l->next != NULL)
- {
- l = l->next;
- }
- ultim = l->val;
- return ultim;
- }
- List insert(List l, int val)
- {
- int ult;
- Element *p1, *p2, *p;
- if(l == NULL)
- {
- l = (Element *) malloc(sizeof(Element));
- l->val = val;
- l->next = NULL;
- return l;
- }
- else
- {
- ult = ultimulElement(l);
- if(ult <= val)
- {
- l = append(l, val);
- }
- else
- {
- p1 = NULL;
- p2 = l;
- for( ; p2->val < val; p2 = p2->next)
- {
- p1 = p2;
- if(p2->next->next == NULL)
- {
- p2 = p2->next;
- break;
- }
- }
- p = (Element *)malloc(sizeof(Element));
- p->val = val;
- p->next = p2;
- if (p1 == NULL)
- l = p;
- else
- p1->next = p;
- return l;
- }
- }
- }
- List freeList(List l)
- {
- List tmp;
- while (l != NULL)
- {
- tmp = l;
- l = l->next;
- free(tmp);
- }
- return l;
- }
- int main()
- {
- int dim, ultim;
- List l;
- l = NULL;
- int n;
- l = init(-9);
- print(l);
- scanf("%d", &n);
- while (n!= 0) {
- l = prepend(l, n);
- scanf("%d", &n);
- }
- print(l);
- dim = len(l);
- printf("Dimensiunea listei este %d!\n", dim);
- printf("Eliminare ultimul!\n");
- l = delLast(l);
- print(l);
- printf("Eliminare primul!\n");
- l = delFirst(l);
- print(l);
- printf("Adaugare la sfarsit!\n");
- l = append(l, 10);
- print(l);
- printf("Ultimul element!\n");
- ultim = ultimulElement(l);
- printf("Ultimul element este %d!\n", ultim);
- printf("Inserare element!\n");
- l = insert(l, 55);
- print(l);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment