Olá preciso que alguém me ajude a corrigir meu programa principalmente na parte de inserção à direita
o professora possou como fazer mas eu não consegui pegar direito se alguém poder me ajudar eu agradeço!!!
/*Utilizando listas simplesmente encadeadas escreva um programa capaz de:
a) Inserir de forma ordenada;
B) Inserir fim;
c) Inserir no inicio;
d) Imprimir;
e) Remover;
f) Buscar um elemento na lista.*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.>
#include <string.h>
#include <malloc.h>
typedef struct list
{
int dado;
struct list *prox;
}def_lista;
def_lista *lista = NULL;
int insere_ordenado()
{
int num = 0;
system ("cls");
printf("entre com um numero:\n");
scanf("%d",&num);
return;
}
[b]int insere_direita(*primeiro)
{
struct list *p=0,*aux,*aux2;
int num = 0;
*primeiro=primeiro;
puts("entre com um valor");
scanf("%d",&num);
malloc(p);
printf("O NUMERO é: %d \n",p);
if(p == NULL)
{
printf("Erro de alocacao");
}
else
{
p->dado=num;
p->prox=NULL;
}
if(primeiro == NULL)
primeiro=p;
else
aux=primeiro;
while(aux-> prox != NULL)
aux=aux->prox;
p->prox = aux;
return 1;
}[/b]
int insere_inicio()
{
int num;
def_lista *aux;
aux = (def_lista *) MALLOC(sizeof(def_lista));
if (aux==NULL)
return 0;
aux->dado = num;
aux->prox = NULL;
if (lista==NULL)
{
lista = aux;
printf("O VALOR %d",lista);
}
else
{
aux->prox = lista;
lista = aux;
printf("O VALOR %d",lista);
}
return 1;
}
/* Exibe o conteudo de lista */
imprimir()
{
def_lista *aux;
aux = lista;
while (aux != NULL)
{
printf(aux->dado);
aux = aux->prox;
}
}
// Classe principal
main()
{
int op,num;
do {
system ("cls");
puts ("\n\n********** LISTAS DINAMICAS **********\n\n");
puts("digite 1 para inserir de forma ordenada");
puts("digite 2 para inserir a direita");
puts("digite 3 para inserir no inicio");
puts("digite 4 para imprimir");
puts("digite 5 para remover");
puts("digite 6 para buscar elemento");
puts("digite 7 para sair do programa\n");
puts("\nENTRE COM A OPCAO DESEJADA:");
scanf("%d", &op);
cria_lista();
switch(op)
{
case 1:
insere_ordenado();
break;
[b] case 2:
insere_direita();
system("pause");
break;[/b]
case 3:
insere_inicio();
printf("entre com um valor no inicio");
scanf("%d \n",&num);
system ("cls");
break;
case 4:
imprimir ();
if (!imprimir())
system ("cls");
printf("\n Lista Vazia \n\n ");
system ("pause");
break;
case 5:
break;
case 6:
break;
case 7:
printf("\nFim do Programa...\n");
break;
default:
system ("cls");
puts ("\nNumero Invalido!\n");
system ("pause");
} // fim do switch
} while (op != 7);// fim do laço do
getch();
} // fim da classe main
se alguém poder me ajudar esse é meu e-mail. jonathaneld@hotmail.com
Pergunta
jhoul
Olá preciso que alguém me ajude a corrigir meu programa principalmente na parte de inserção à direita
o professora possou como fazer mas eu não consegui pegar direito se alguém poder me ajudar eu agradeço!!!
/*Utilizando listas simplesmente encadeadas escreva um programa capaz de:
a) Inserir de forma ordenada;
B) Inserir fim;
c) Inserir no inicio;
d) Imprimir;
e) Remover;
f) Buscar um elemento na lista.*/
#include<stdio.h> #include<stdlib.h> #include<conio.> #include <string.h> #include <malloc.h> typedef struct list { int dado; struct list *prox; }def_lista; def_lista *lista = NULL; int insere_ordenado() { int num = 0; system ("cls"); printf("entre com um numero:\n"); scanf("%d",&num); return; } [b]int insere_direita(*primeiro) { struct list *p=0,*aux,*aux2; int num = 0; *primeiro=primeiro; puts("entre com um valor"); scanf("%d",&num); malloc(p); printf("O NUMERO é: %d \n",p); if(p == NULL) { printf("Erro de alocacao"); } else { p->dado=num; p->prox=NULL; } if(primeiro == NULL) primeiro=p; else aux=primeiro; while(aux-> prox != NULL) aux=aux->prox; p->prox = aux; return 1; }[/b] int insere_inicio() { int num; def_lista *aux; aux = (def_lista *) MALLOC(sizeof(def_lista)); if (aux==NULL) return 0; aux->dado = num; aux->prox = NULL; if (lista==NULL) { lista = aux; printf("O VALOR %d",lista); } else { aux->prox = lista; lista = aux; printf("O VALOR %d",lista); } return 1; } /* Exibe o conteudo de lista */ imprimir() { def_lista *aux; aux = lista; while (aux != NULL) { printf(aux->dado); aux = aux->prox; } } // Classe principal main() { int op,num; do { system ("cls"); puts ("\n\n********** LISTAS DINAMICAS **********\n\n"); puts("digite 1 para inserir de forma ordenada"); puts("digite 2 para inserir a direita"); puts("digite 3 para inserir no inicio"); puts("digite 4 para imprimir"); puts("digite 5 para remover"); puts("digite 6 para buscar elemento"); puts("digite 7 para sair do programa\n"); puts("\nENTRE COM A OPCAO DESEJADA:"); scanf("%d", &op); cria_lista(); switch(op) { case 1: insere_ordenado(); break; [b] case 2: insere_direita(); system("pause"); break;[/b] case 3: insere_inicio(); printf("entre com um valor no inicio"); scanf("%d \n",&num); system ("cls"); break; case 4: imprimir (); if (!imprimir()) system ("cls"); printf("\n Lista Vazia \n\n "); system ("pause"); break; case 5: break; case 6: break; case 7: printf("\nFim do Programa...\n"); break; default: system ("cls"); puts ("\nNumero Invalido!\n"); system ("pause"); } // fim do switch } while (op != 7);// fim do laço do getch(); } // fim da classe mainse alguém poder me ajudar esse é meu e-mail. jonathaneld@hotmail.com
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.