Oi pessoal, estou publicando um dos exercícios da prova de Estrutura de Dados sobre listas dinâmicas que fiz em parceria com meu amigo Thiago Castello que é fera em linguagem C.
segue o código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
 
#include <stdio.h> //carrega as bibliotecas
#include <stdlib.h>
 
//declaracao da lista
struct No{
        int valor;
        struct No * prox;
       };
 
struct No * Lista;
 
int main (void){
  Lista = NULL;
  int opcao;
  int x;
 
  do {
   printf ("nn Digite a opcao desejada:");
   printf ("n 1-inserir ");
   printf ("n 2-remover ");
   printf ("n 3-buscar ");
   printf ("n 4-Sair do programa nn");
   scanf ("%d", &opcao);
 
   switch (opcao){
 
     case 1:
           {
             printf ("nDigite o preco: ");
             scanf ("%d", &x);
 
             struct No * aux= (struct No *) malloc (sizeof (struct No));
             aux -> valor = x;
             aux-> prox = Lista;
             Lista =aux;
             printf ("n preco adicionado!n");
             break;
             }
 
    case 2: //remover
             {
               printf ("npreco a ser removido");
               scanf ("%d", &x);
               struct No * aux;
               struct No * ant;
 
               aux = Lista;
               ant = NULL;
               while (aux != NULL){
                     if (aux->valor == x){
 
                       if (aux == Lista)
                       {
                          Lista = aux->prox;
 
                       }
                       else{
                            ant->prox= aux-> prox;
                           }
                       printf ("nRemovido com sucesso!");
                       break;
                     }
                     else{
                           ant = aux;
                           aux = aux ->prox;
                         }
               }
 
             }
             break;
    case 3 : //buscar
                {
              int vlbusca;
             printf("digite o valor da busca:");
             scanf("%d",&vlbusca);
 
 
               struct No * aux;
               aux= Lista;
               while (aux != NULL)
               {
                   if(aux->valor == vlbusca)
                   { printf ("n o valor existe:", vlbusca);
 
                   } else {
                          printf ("n o valor nao existe:", vlbusca);
                          }
 
                  aux = aux -> prox;
 
               }
 
               break;
                }
 
 
    case 4: {
        break;
 
           }
   } //fim do switch
  } while (opcao != 4); //sair do programa
}

Para implementar editar e criar o executavel indico o programa Dev-C++ que pode sei baixado atraves de um dos links abaixo.
http://www.baixaki.com.br/download/dev-c-.htm
http://www.bloodshed.net/devcpp.html
O Dev-C++ é gratuito e de código aberto