Id returned 1 exit status

di il
1 risposte

Id returned 1 exit status

Salve ragazzi,sapete il perchè mi compare questo errore in questo programma ?


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <malloc.h>


struct listNode{

char data;
struct listNode *nextPtr;


};

typedef struct listNode ListNode;
typedef ListNode *ListNodePtr;



//prototipi

void inserisci(ListNodePtr *sPtr, char valore);
char elimina(ListNodePtr *sPtr, char valore);
int vuota(ListNodePtr sPtr);
void stampaLista (ListNodePtr attualePtr);
void istruzioni (void);


int main(void)
{
ListNodePtr startPtr= NULL; // all'inizio non ci sono nodi
char carattere;//char inserito dall'utente
istruzioni();//stampa il menu
printf("%s","? ");
unsigned int scelta;//scelta dell'utente
scanf("%u",&scelta);

//ripeti il ciclo finchè l'utente non sceglie 3

while(scelta!=3){

switch(scelta){

case 1:
printf("%s","Inserisci un carattere:");
scanf("\n%c",&carattere);
inserisci(&startPtr,carattere);//inserisci l'elemento nella lista
stampaLista(startPtr);
break;

case 2://cancella un elemento
if(!vuota(startPtr)){

printf("%s","Inserisci carattere da eliminare: ");
scanf("\n%c",&carattere);


//se il carattere viene trovato, rimuovilo
if(elimina(&startPtr,carattere)){

printf("%c eliminato.\n",carattere);
stampaLista(startPtr);
}

else{
printf("%c non trovato.\n\n",carattere);


}


}

else{

puts("lista vuota.\n");


}

break;
default:
puts("scelta non valida.\n");
istruzioni();
break;


}
printf("%s","? ");
scanf("%u",&scelta);

}

puts("FINE");



}


//stampa le istruzioni all'utente
void istruzioni(void)
{

puts("Inserisci una scelta:\n"
" 1 per inserire un elemento nella lista\n"
" 2 per eliminare un elemento dalla lista\n"
" 3 per uscire.");

}
void inserisci(ListNodePtr *sPtr, char valore)
{
ListNodePtr newPtr= malloc(sizeof(ListNode));
if(newPtr!=NULL){//Se c'è spazio disponibile

newPtr-> data=valore;//inserisci valore nel nodo
newPtr->nextPtr = NULL;//il nodo non è collegato ad altri nodi


ListNodePtr primaPtr=NULL;
ListNodePtr attualePtr= *sPtr;


//ripeti il ciclo per trovare la posizione corretta nella lista
while(attualePtr!=NULL && valore > attualePtr->data){

primaPtr=attualePtr;//va avanti....
attualePtr=attualePtr->nextPtr;//..al nodo successivo

}

//inserisci il nuovo nodo all'inizio della lista

if(primaPtr== NULL){

newPtr->nextPtr= *sPtr;
*sPtr =newPtr;
}
else {
primaPtr->nextPtr=newPtr;
newPtr->nextPtr=attualePtr;
}
}

else{
printf("%c non inserito.Memoria non disponibile.\n",valore);
}

}

char elimina(ListNodePtr *sPtr, char valore)
{

if(valore==(*sPtr)->data){

ListNodePtr tempPtr= *sPtr;//aggancia il nodo da rimuovere
*sPtr=(*sPtr)->nextPtr;//sfila il nodo
free(tempPtr);//libera il nodo
return valore;

}
else{


ListNodePtr primaPtr = *sPtr;
ListNodePtr attualePtr = (*sPtr)->nextPtr;


while(attualePtr!=NULL && attualePtr->data!=valore){
primaPtr=attualePtr;//va avanti...
attualePtr=attualePtr->nextPtr;//...al nodo successivo
}

//cancella il nodo a cui punta currentPtr
if(attualePtr !=NULL){
ListNodePtr tempPtr = attualePtr;
primaPtr->nextPtr=attualePtr->nextPtr;
return valore;


}

}
return '\0';

}
//restituisci 1 se la lista è vuota,altrimenti 0

void stampaLista (ListNodePtr attualePtr)
{

//se la lista è vuota
if(vuota(attualePtr)){

puts("lista vuota.\n");

}
else{

puts("La lista e':");

//finchè non si raggiunge la fine della lista
while(attualePtr !=NULL){

printf("%c-->",attualePtr->data);
attualePtr = attualePtr->nextPtr;

}
puts("NULL\n");
}

}

1 Risposte

  • Re: Id returned 1 exit status

    Puoi usare i tag CODE per il codice come da regolamento?

    Il codice non indentato e con tutte queste linee in più bianche, non si capisce molto.

    Comunque, MANCA la funzione

    vuota
Devi accedere o registrarti per scrivere nel forum
1 risposte