Listas ligadas
#include
#include "funcoes_listas.h"
int main(){
PNodo p; int opcao, valor,soma=0, num =0,ele,elemRemov, elemR;
do { printf("\n************** Menu ***************\n\n"); printf("1 - Criar (cria a lista vazia)\n"); printf("2 - Ler(x), X>0\n"); printf("3 - Listar\n"); printf("4 - Inserir inicio\n"); printf("5 - Soma dos valores\n"); printf("6 - Nº elementos >= k\n"); printf("7 - remover elemento\n"); printf("8- remover iguas a k\n"); printf("0 - Sair\n");
scanf("%d%*c",&opcao);
switch (opcao){ case 1: p =Criar(); break; case 2: printf("Valor"); scanf("%d", &valor); p = InserirInicio(p, valor); break; case 3: ListarRec(p); break; case 5: soma = somaValores(p); printf("Soma-->%d\n",soma); break; case 6: printf("introduza o elemento:"); scanf("%d", &ele); num = numElementos(p,ele); printf("existem %d elementos >= que %d",num,ele); break; case 7: printf("Introduza o elemento a remover"); scanf("%d",&elemRemov); RemoverRec(p,elemRemov); break;
case 8: printf("Introduza o elemento "); scanf("%d",&elemR); removerTodos(p,elemR);
break;
}
if(opcao < 0 || opcao > 8) printf("\n\033[31mA opcção seleccionada não é válida. Insira uma opcção válida:\033[37m\n\n");
}while((opcao < 0 || opcao > 8) || opcao !=0);
}
struct Nodo
{
int elemento; struct Nodo *nseg;
};
typedef struct Nodo *PNodo;
PNodo Criar()
{
PNodo l;
l = NULL;
return (l);
}
PNodo CriarNodo(int x)
{
PNodo p;
p = (PNodo) malloc (sizeof(struct Nodo));
if(p == NULL) return (NULL);
p -> elemento = x; p -> nseg = NULL;
return (p);
}
PNodo InserirInicio (PNodo l, int x)
{
PNodo p;
p = CriarNodo(x); if(p == NULL) return (l);
p -> nseg = l;
l = p;
return (l);
}
void LibertarNodo(PNodo p)
{
free(p); p = NULL;
}
int Vazia (PNodo l)