Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct element
- {
- int val;
- struct element *urm;
- };
- typedef struct element NOD;
- void test(NOD *p)
- {
- if(p == NULL){
- printf("Alocare dinamica esuata !");
- exit(1);
- }
- }
- int main (void)
- {
- NOD *cap_lista, *p, *q, *cap_nou, *fin_nou, *aux, *tmp, *x;
- int i, nr_el;
- printf("Numarul de elemente din lista initiala = ");
- scanf("%d",&nr_el);
- p = (NOD*)malloc(sizeof(NOD));
- test(p);
- scanf("%d",&p->val);
- p->urm = NULL;
- cap_lista = p;
- for(i = 2; i <= nr_el; i++)
- {
- q = (NOD*)malloc(sizeof(NOD));
- test(q);
- scanf("%d",&q->val);
- q->urm = NULL;
- p->urm = q;
- p = q;
- }
- puts("Lista initiala este :");
- for(p = cap_lista; p != NULL; p = p->urm)
- printf("%d \n",p->val);
- puts("Introd. noul cap al listei :");
- cap_nou = (NOD*)malloc(sizeof(NOD));
- scanf("%d",&cap_nou->val);
- cap_nou->urm = cap_lista;
- cap_lista = cap_nou;
- puts("Lista finala cu noul cap este :");
- for(p = cap_lista; p != NULL; p = p->urm)
- printf("%d ",p->val);
- puts("\nIntrod. noul final al listei :");
- fin_nou = (NOD*)malloc(sizeof(NOD));
- test(fin_nou);
- scanf("%d",&fin_nou->val);
- fin_nou->urm = NULL;
- for(p = cap_lista; p != NULL; p = p->urm)
- if (p->urm == NULL){
- p->urm = fin_nou; // Retin adressa noului element
- p = fin_nou; // Stabilesc legatura intre ultimul element si noul final
- }
- puts("Lista finala cu noul final este :");
- for(p = cap_lista; p != NULL; p = p->urm)
- printf("%d ",p->val);
- puts("\n Eliminare elemente <5 din lista:");
- tmp = cap_lista;
- p = cap_lista;
- while(p != NULL)
- {
- if(p == cap_lista) p = p->urm;
- if(p != NULL){
- if(p->val < 5)
- {
- aux = p;
- tmp->urm = p->urm;
- p = p->urm;
- free(aux);
- }
- else
- {
- p = p->urm;
- tmp = tmp->urm;
- }
- }
- else break;
- }
- if (cap_lista->val < 5){
- aux = cap_lista;
- cap_lista = cap_lista->urm;
- free(aux);
- }
- for(p = cap_lista; p != NULL; p = p->urm)
- printf("%d ",p->val);
- puts("\n Inserare valoarea 4 dupa elementele impare :");
- for(p = cap_lista; p != NULL; p = p->urm)
- {
- if(p->val % 2 == 0)
- {
- aux = p->urm;
- p->urm = x;
- x->urm = aux;
- }
- else p = p->urm;
- }
- for(p = cap_lista; p != NULL; p = p->urm)
- printf("%d ",p->val);
- return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement