desculpa a pressa mas olha o código inteiro #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int quant=0;
struct Lista{
int item;
struct Lista *next;
};
typedef struct Lista lista;
lista *primeira=NULL, *ultima=NULL, *matriz[3];
void adiciona();
void busca();
void exibe(int i);
void remove();
void menu();
void tamanho();
int frequencia(lista *p, int n);
void substituir(lista *p, int n, int m);
void *mallocX (unsigned int nbytes);
lista **listadupla(lista *p, int n);
void *mallocX (unsigned int nbytes)
{
void *ptr;
ptr = malloc (nbytes);
if (ptr == NULL) {
printf ("Socorro! malloc devolveu NULL!\n");
exit (EXIT_FAILURE);
}
return ptr;
}
void adiciona(){
lista *p;
p = (lista *)mallocX (sizeof(lista));
printf("Digite o item da lista:\n");
scanf("%d", &p->item);
if(!primeira){
p->next = NULL;
primeira = p;
ultima = p;
quant++;
return;
}
p->next = NULL;
ultima->next = p;
ultima = p;
quant++;
}
void busca(){
int s;
int p=0;
lista *q;
q = primeira;
printf("Digite o valor do item da lista\n");
scanf("%d", &s);
while(q){
if(q->item == s){
p++;
printf("O item esta na %d posicao\n", p);
return;}
p++;
q = q->next;
}
printf("O item não esta na lista\n");
}
void remove(){
int s;
lista *q, *ant, *prox;
q = primeira;
prox = q -> next;
ant = NULL;
printf("Digite o valor do item da lista\n");
scanf("%d", &s);
while(q){
if(q->item == s){
if(!ant){
free(q);
primeira = primeira -> next;
quant--;
return;}
ant->next = prox;
free(q);
quant--;
return;}
ant = q;
if(q->next){
q = q->next;
prox = q->next;
break;
}
q = NULL;
}
printf("O item não esta na lista\n");
}
void exibe(int i){
lista *p;
if(i == 0){
p = primeira;
while(p){
printf("%d\n", p->item);
p = p->next;
}
}
else
{
p = matriz[i];
if(!matriz[i]){
printf("não existe itens aki\n");
return;}
while(p){
printf("%d\n", p->item);
p = p->next;
}}
}
void tamanho(){
printf("O tamanho do lista e %d\n", quant);
}
int frequencia(lista *p, int n){
lista *q;
int i=0, cont=0;
if(!q){
printf("A lista estar vazia\n");
return 0;
}
while(q){
if(q->item == n){
i++;
cont++;
printf("Ele esta na posicao %d\n", cont);
}
q = q->next;
cont++;
}
return i;
}
void substituir(lista *p, int n, int m){
lista *q;
q = p;
if(n == m)
return;
while(q){
if(q->item == n){
q->item = m;
}
q = q->next;
}
}
lista **listadupla(lista *p, int n){
int i;
lista *a, *b, *c, *d, *q;
matriz[1] = NULL;
matriz[2] = NULL;
matriz[0] = p;
q = p;
while(q){
if(q->item < n){
if(!matriz[1]){
matriz[1] = (lista *)mallocX (sizeof(lista));
matriz[1]->item = q->item;
matriz[1]->next = NULL;
a = matriz[1];
c = matriz[1];
break;
}
matriz[1] ->next = (lista *)mallocX (sizeof(lista));
matriz[1] = matriz[1]->next;
matriz[1]->item = q->item;
c->next = matriz[1];
c = matriz[1];
}
else{
if(!matriz[2]){
matriz[2] = (lista *)mallocX (sizeof(lista));
matriz[2]->item = q->item;
matriz[2]->next = NULL;
b = matriz[2];
d = matriz[2];
break;
}
matriz[2] ->next = (lista *)mallocX (sizeof(lista));
matriz[2] = matriz[2]->next;
matriz[2]->item = q->item;
d->next = matriz[2];
d = matriz[2];
}
q = q->next;
}
matriz[1] = a;
matriz[2] = b;
return matriz;
}
void menu(){
int i=1, n, freq;
lista **p;
while(i){
printf("Digite a opcao correspondente:\n 1- Inserir;\n 2- Remover;\n 3- Buscar; \n 4- Exibir;\n 5- Tamanho da Lista;\n 6- Verificar Frequencia\n 7- Substiruir numeros\n 8- Criar Duas Listas\n 9- Sair.\n");
scanf("%d",&i);
switch(i){
case 1:
system("cls");
adiciona();
system("cls");
break;
case 2:
system("cls");
remove();
system("pause");
system("cls");
break;
case 3:
system("cls");
busca();
system("cls");
break;
case 4:
system("cls");
printf("Digite qual das listas você deseja exibir:\n 1- original\n 2- menor\n 3-maior\n");
scanf("%d", &n);
exibe(n-1);
system("pause");
system("cls");
break;
case 5:
system("cls");
tamanho();
system("cls");
break;
case 6:
system("cls");
printf("Digite o valor que deseja verificar frequencia\n");
scanf("%d", &n);
freq = frequencia(primeira, n);
printf("A frequencia e de %d vezes\n", freq);
system("pause");
system("cls");
break;
case 7:
system("cls");
printf("Digite o número que voce deseja substituir:\n");
scanf("%d", &n);
printf("Digite o número pelo qual vai ser substiruido:\n");
scanf("%d", &freq);
substituir(primeira, n, freq);
system("cls");
break;
case 8:
system("cls");
printf("Digite o número que voce deseja separar as listas:\n");
scanf("%d", &n);
p = listadupla(primeira, n);
system("cls");
break;
case 9:
exit(0);
break;
default:
printf("Opcao invalida\n");
}}}
main(){
menu();
return 1;
}