Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #define capacidade 10
- typedef struct {
- int topo;
- int elemento[capacidade];
- }pilha;
- //protótipos de funções
- void init(pilha *p);
- int push(pilha *p, int valor);
- int pop(pilha *p, int *valor);
- int is_empty(pilha *p);
- int is_full(pilha *p);
- int top(pilha *p);
- int size(pilha *p);
- void imprimir(pilha *p);
- int main() {
- int op = 0, valor;
- pilha novapilha;
- pilha *p;
- p = &novapilha;
- init(p);
- do{
- system("clear");
- printf("<<PILHA>>\n");
- printf("(1) Inserir\n(2) Remover\n(3) Imprimir\n(4) Ultimo da Lista\n(5) Tamanho da Lista\n");
- scanf("%d", &op);
- if(op < 1 || op > 6)
- printf("\nOpcao invalida!");
- else {
- switch(op){
- case 1:{
- printf("Digite um valor para ser inserido na pilha: ");
- scanf("%d", &valor);
- push(p, valor);
- break;
- }
- case 2:{
- pop(p, &valor);
- printf("Valor que vai ser removido da lista: %d", valor);
- break;
- }
- case 3:{
- imprimir(p);
- printf("pressione ");
- break;
- }
- case 4:{
- printf("\n%d", top(p));
- break;
- }
- case 5:{
- printf("\n%d", size(p));
- break;
- }
- default:
- break;
- }
- }
- }while(op != 6);
- return 0;
- }
- //Operações fundamentais
- void init(pilha *p) {
- p->topo = -1;
- }
- int push(pilha *p, int valor) {
- if(is_full(p))
- return 0;
- else{
- p->elemento[++p->topo] = valor;
- return 1;
- }
- }
- int pop(pilha *p, int *valor) {
- if(is_empty(p))
- return 0;
- else{
- *valor = p->elemento[p->topo--];
- return 1;
- }
- }
- void imprimir(pilha *p) {
- int i;
- if(is_empty(p))
- printf("\nPilha Vazia!");
- else
- for(i = 0; i <= p->topo; i++)
- printf("Posicao: %d | Elemento: %d\n ", i, p->elemento[i]);
- }
- //Operações Auxiliares
- int top(pilha *p) {
- return p->elemento[p->topo];
- }
- int size(pilha *p) {
- return p->topo+1;
- }
- int is_empty(pilha *p) {
- return (p->topo == -1);
- }
- int is_full(pilha *p) {
- return (p->topo == capacidade-1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement