Ciao ragazzi!!
ho un problema con questo esercizio e sto andando veramente in tilt.
devo scrivere un programma C che ogni volta che riceve in input una parola la inserisce in una lista linkata ordinata.
sono riuscita a fare delle cose..il problema è questo:se inserisco due parole ad esempio lago e amaca,le mette in ordine:
amaca
lago
e quindi in testa la inserisce senza problemi,quando devo inserire una nuova parola in mezzo o in coda,e quinsi se ad esempio a quelle due aggiungo mare ottengo
amaca
mare
perchè??????vi prego è una settimana che sto cercando di capire cosa sbaglio
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#define MAX_DIM 20
struct Elenco;
typedef Elenco * puntElenco;
typedef struct Elenco{
char info[MAX_DIM];
puntElenco next;
} Elenco;
puntElenco inserisci(puntElenco L, char*word){
puntElenco q;
q=(puntElenco)malloc(sizeof(Elenco));
strcpy(q->info,word);
q->next=L;
return(q);
}
puntElenco InserisciElementoInLista(puntElenco L,char*parola){
puntElenco q=L, prec;
int PosTrovata=0;
if(q==NULL){
q=inserisci(L,parola);
return(q);
}
if(strcmp(q->info,parola)==1){
q=inserisci(L,parola);
return q;
}
prec=q;
while((q->next!=NULL) && (PosTrovata==0)){
if(strcmp(q->info,parola)==-1){
prec=q;
q=q->next;
}
else PosTrovata=1;
}
prec->next=inserisci(q->next,parola);
return (L);
}
void VisualizzaLista(puntElenco L){
puntElenco q=L;
printf("\nLista parole:\n\n");
while(q!=NULL){
printf("%s\n",q->info);
q=q->next;
}
printf("\n");
}
main (){
puntElenco el_parole;
el_parole = NULL;
int scelta,a=1;
char word[MAX_DIM]={'\0'},lunga[MAX_DIM]={'\0'};
do{
system("cls");
printf("SCELTA OPERAZIONE \n");
printf("\nPREMI 1:-----------INSERISCI PAROLA---------------------\n");
printf("PREMI 2:-----------VISUALIZZA LISTA-----------------\n");
printf("PREMI 3:----------------USCITA-----------------\n");
printf("\nScelta: ");
scanf("%d",&scelta);
if(scelta==1){
printf("Digita la parola da inserire: ");
scanf("%s",word);
el_parole=InserisciElementoInLista(el_parole,word);
}
if(scelta==2) VisualizzaLista(el_parole);
if(scelta==3) a=0;
if(scelta!= 1 && scelta!= 2 && scelta!= 3) printf("\nScelta non valida\n\n");
system("PAUSE");
} while(a!=0);
return 0;
}