Skip to content

Instantly share code, notes, and snippets.

@TopRoupi
Created May 10, 2020 22:36
Show Gist options
  • Save TopRoupi/382918757d628635731b57241c98efcb to your computer and use it in GitHub Desktop.
Save TopRoupi/382918757d628635731b57241c98efcb to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
typedef struct nodo {
char data;
struct nodo *link;
} *ptr;
typedef struct pilha {
int tam;
ptr lista;
} tpilha;
void insere(tpilha *p, char elem) {
ptr aux = malloc(sizeof(struct nodo));
aux->data = elem;
aux->link = p->lista;
p->lista = aux;
}
char rem(tpilha *p){
char removed_element = p->lista->data;
ptr aux;
aux = p->lista;
p->lista = aux->link;
free(aux);
return removed_element;
}
int main(void) {
// Teste o programa do material didático
// que cria ula lista encadeada com os
// caracteres 'C', 'A', 'D' e 'E'
ptr lista = malloc(sizeof(struct nodo));
lista->data = 'C';
ptr aux = malloc(sizeof(struct nodo));
lista->link = aux;
aux->data = 'A';
aux->link = malloc(sizeof(struct nodo));
aux = aux->link;
aux->data = 'D';
aux->link = malloc(sizeof(struct nodo));
aux = aux->link;
aux->data = 'E';
aux->link = NULL;
// print
aux = lista;
printf("%c", aux->data);
aux = aux->link;
printf("%c", aux->data);
aux = aux->link;
printf("%c", aux->data);
aux = aux->link;
printf("%c", aux->data);
aux = aux->link;
printf("\n");
// e os códigos subsequentes que incluem um novo
// elemento no início da lista e retiram elementos
// do início da lista
// Após estes testes tente desenvolver as rotinas de
// pilha para uma lista implementada com alocação dinâmica
// de listas encadeadas
tpilha pilha;
insere(&pilha, 'A');
printf("%c", pilha.lista->data);
printf("\n");
printf("%c", rem(&pilha));
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment