Listas encadeadas - busca

Considere uma lista encadeada com nó cabeça le definida por células

typedef struct celula {
   int dado;
   struct celula *prox;
} celula;

Sua tarefa nesse exercício é implementar a operação de busca na lista encadeada encabeçada por le. Para tanto, você deve submeter um arquivo contendo apenas:

  1. Os #include necessários para execução das instruções utilizadas no seu código.

  2. A definição da struct celula.

  3. Uma função que procura pela primeira ocorrência do elemento xx na lista encadeada e devolve um ponteiro para a célula que o contém. O protótipo desta função deve ser:
celula *busca (celula *le, int x);
  1. Uma função que faz o mesmo que o item 3, mas recursiva, com protótipo
celula *busca_rec (celula *le, int x);