Pilhas - inserção de elementos

Numa pilha, a inserção de elementos é chamada empilhamento. Sua tarefa nesse exercício é implementar essa operação usando vetores. Para tanto, você deve submeter a função

int empilha (pilha *p, int x);

que deve

Espera-se que pilha seja uma struct da forma

typedef struct pilha {
  int *dados;
  int N, topo;
} pilha;

de tal forma que topo indica a primeira posição livre da pilha (ou seja, na inicialização vale 0 e quanto a pilha estiver cheia, vale N).

Observação: se na inserção, o elemento não couber na pilha, o vetor dados deve ser redimensionado.

O arquivo a ser submetido deve incluir apenas

  1. os #include necessários para a execução do seu código,

  2. a declaração da estrutura necessária e

  3. a função solicitada.