Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct pila{
- int inf;
- struct pila *pun;
- };
- /*funzioni*/
- int menuPila();
- struct pila *creaPila();
- struct pila *pushPila(struct pila *);
- struct pila *popPila(struct pila *);
- struct pila *clearPila(struct pila *);
- void printPila(struct pila *);
- int confronto(struct pila *, int);
- main()
- {
- struct pila *puntTesta=NULL;
- int menu=-1, cont=-1;
- while(menu!=0){
- if(cont==-1) menu=1;
- else menu=menuPila();
- switch(menu){
- case 1: {
- system("cls");
- if(cont==-1) puntTesta= creaPila();
- puntTesta= pushPila(puntTesta); cont=0; break;}
- case 2: {
- puntTesta= popPila(puntTesta); break;}
- case 3: {puntTesta= clearPila(puntTesta); break;}
- case 4: {printPila(puntTesta); break;}
- case 5: {menu=0; break;}
- default:{
- printf("opzione non ammessa");
- printf("\n\n\nIn attesa...\t");
- getchar();}
- }
- system("cls"); }
- return 0;
- }
- /*menu'*/
- int menuPila()
- {
- int menu;
- printf("\n------------- MENU'------------\n");
- printf("\n1. Inserisci elemento\n\n2. Rimuovi elemento\n\n3. Svuota pila\n\n4. Stampa pila\n\n5. Exit\n\n ");
- scanf("%d", &menu);
- getchar();
- return menu;
- }
- /*crea lista*/
- struct pila *creaPila()
- {
- struct pila *p;
- p=(struct pila *)malloc(sizeof(struct pila));
- printf("\nInserisci un elemento\t");
- scanf("%d", &p->inf);
- p->pun=NULL;
- return(p);
- }
- struct pila *pushPila(struct pila *p)
- {
- struct pila *paus;
- struct pila x;
- int conf;
- paus=p;
- while(x.inf!=0){
- p=paus;
- printf("\n\nInserisci un elemento, 0 per uscire\t");
- scanf("%d", &x.inf);
- conf=confronto(p, x.inf);
- if(conf==0){ printf("\n\nElemento gia' presente!\t"); getchar;}
- else if(x.inf!=0){
- paus=(struct pila *)malloc(sizeof(struct pila));
- paus->inf=x.inf; paus->pun=p;}}
- return(paus);
- }
- struct pila *popPila(struct pila *p)
- {
- struct pila *paus=p;
- system("cls");
- p=p->pun;
- printf("\n\n\tElemento eliminato: %d", paus->inf);
- printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\nIn attesa...");
- getchar();
- free(paus);
- return p;
- }
- struct pila *clearPila(struct pila *p)
- {
- struct pila *paus;
- system("cls");
- while(p!=NULL){
- paus=p;
- p=p->pun;
- free(paus);}
- printf("\n\n\n\n\t\tPila svuotata!!\n\n\n\n");
- getchar();
- return NULL;
- }
- void printPila(struct pila *p)
- {
- system("cls");
- printf("\n\t|\t \t|");
- while(p!=NULL){
- printf("\n\t|\t%d\t|", p->inf);
- p=p->pun;}
- printf("\n\t_________________");
- printf("\n\n\nIn attesa...");
- getchar();
- }
- int confronto(struct pila *p, int ele)
- {
- while(p!=NULL){
- if(p->inf==ele) return 0;
- p=p->pun;}
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement