Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct pila
- {
- int elemento;
- struct pila *next;
- }pila;
- pila* inser_testa (pila *p);
- pila* inser_succ (pila *p, int i);
- void stampa (pila *p);
- void elimina_testa (pila *p);
- pila* elimina_coda (pila *p);
- void elimina_mezzo (pila *p, int k);
- void elimina_mezzo_pos (pila *p, int el, int n);
- int main()
- {
- pila *p;
- int n,i,k,el;
- printf("Quanto elementi deve contenere la pila? ");
- scanf("%d",&n);
- if(n==1)
- p= inser_testa(p);
- else
- {
- p=inser_testa(p);
- for (i=1;i<n;i++)
- {
- p= inser_succ(p,i);
- }
- }
- stampa(p);
- elimina_testa(p);
- printf("\n");
- stampa(p);
- p=elimina_coda(p);
- printf("\n");
- stampa(p);
- printf("\nInserisci elemento da eliminare: ");
- scanf("%d",&k);
- elimina_mezzo(p,k);
- system("pause");
- printf("\n");
- stampa(p);
- printf("\nDecidere la posizione dell'elemento da eliminare:");
- scanf("%d",&el);;
- elimina_mezzo_pos (p,el,n-2);
- stampa(p);
- return 0;
- }
- pila* inser_testa (pila *p)
- {
- p= (pila *)calloc(1, sizeof(pila));
- printf("inserisci il 1 elemento della pila: ");
- scanf("%d",&p->elemento);
- p->next= NULL;
- return p;
- }
- pila* inser_succ (pila *p, int i)
- {
- pila *nuovo;
- nuovo= (pila *) calloc(1, sizeof(pila));
- printf("inserisci il %d elemento della pila: ",i+1);
- scanf("%d",&nuovo->elemento);
- nuovo->next=p;
- return nuovo;
- }
- void stampa (pila *p)
- {
- if(p!=NULL)
- {
- printf("%d\t",p->elemento);
- stampa(p->next);
- }
- }
- void elimina_testa (pila *p)
- {
- if(p->next->next==NULL)
- p->next=NULL;
- else elimina_testa(p->next);
- }
- pila* elimina_coda (pila *p)
- {
- return p->next;
- }
- void elimina_mezzo (pila *p,int k)
- {
- if(p->next!=NULL)
- {
- if(p->next->elemento==k)
- {
- (p->next)=(p->next->next);
- elimina_mezzo(p,k);
- }
- else
- {
- elimina_mezzo(p->next,k);
- }
- }
- }
- void elimina_mezzo_pos (pila *p, int el, int n)
- {
- int i;
- for(i=n;i>n-el+1;i--)
- {
- p=p->next;
- }
- p->next=p->next->next;
- }
Advertisement
Add Comment
Please, Sign In to add comment