Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<conio.h>
- void Clean(void)
- {
- #ifndef WIN32
- sleep(1);
- system("clear");
- #else
- sleep(1500);
- system("cls");
- #endif
- return;
- }
- typedef struct A
- {
- int dado;
- struct A *nelem,*ant;
- }pil;
- void push(pil**);
- void pop(pil**);
- pil *top(pil*);
- char upcase(char);
- int main()
- {
- pil *pilha = NULL;
- char opc;
- do{
- Clean();/* um segundo antes de apagar.*/
- printf("Oque deseja fazer: \n[I]nserir um elemento\t[M]ostrar o elemento no topo\t[R]emover um elemento\n# ");
- scanf("%c",&opc);
- fflush(stdin);
- switch(upcase(opc))
- {
- case 'I': push(&pilha); break;
- case 'M': {
- pil *aux;
- aux = top(pilha);
- if(aux == NULL) printf("\nPilha vazia!\n");
- else printf(" Ultimo elemento da pilha %d \n\n",aux->dado);
- getch();
- break;
- }
- case 'R': pop(&pilha); break;
- default : printf("Opcao incorreta.\n");
- }
- }while( opc != 'S');
- }
- char upcase(char c)
- {
- int v = (int) c;
- if ( ( v >= 65 ) && ( v <= 90 ) ) return c;
- else return (char) v - 32;
- }
- void push(pil **pilha)
- {
- pil *aux = NULL,*novo = NULL;
- int dado;
- printf("Entre com um dado ");
- scanf("%d",&dado);
- if((*pilha) == NULL)
- {
- novo = (pil *) malloc(sizeof(pil));
- novo->dado = dado;
- novo->ant = NULL;
- novo->nelem = NULL;
- *pilha = novo;
- }
- else
- {
- aux = top(*pilha);
- novo = (pil *) malloc(sizeof(pil));
- novo->nelem = NULL;
- novo->ant = aux;
- novo->dado = dado;
- aux->nelem = novo;
- }
- }
- pil *top(pil *p)
- {
- pil *pilha;
- pilha = p;
- if(pilha == NULL)
- {
- return pilha;
- }
- else
- {
- while(pilha->nelem != NULL ) pilha = pilha->nelem;
- return pilha;
- }
- }
- void pop(pil **pilha)
- {
- if( *pilha == NULL )
- {
- printf("Pilha vazia!");
- return;
- }
- else
- {
- pil *aux;
- aux = top(*pilha);
- if(aux->ant == NULL)
- {
- *pilha = NULL;
- }
- else
- {
- (aux->ant)->nelem = NULL;
- free(aux);
- }
- return;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement