Salve a tutti! Ho creato questa nuova discussione, in quanto ho posto il problema che mi si presenta in un argomento sbagliato, andando fuori tema. Ho creato questo codice per la gestione di una coda, mi sapete dire dove ho sbagliato? Non capisco perché non funzioni! Grazie mille!
codice:#include <stdio.h> #include <stdlib.h> struct queueNode{ char nome[12]; char cognome[12]; struct queueNode *nextPtr; }; typedef struct queue QueueNode [120]; typedef QueueNode *QueueNodePtr; void printQueue( QueueNodePtr currentPtr); int isEmpty( QueueNodePtr headPtr); char dequeue( QueueNodePtr *headPtr, QueueNodePtr *tailPtr); void enqueue( QueueNodePtr *headPtr,QueueNodePtr *tailPtr, char value); void instructions(void); int main(int argc, char *argv[]) { QueueNodePtr headPtr=NULL; QueueNodePtr tailPtr=NULL; int choice; char item; Instructions(); printf("?"); scanf("%d",&choice); while(choice!=3){ switch(choice){ case 1: printf("Inserisci un nome\n"); scanf("%s",nome); enqueue(&headPtr,&tailPtr,nome); printQueue(headPtr); break; case 2: printf("Togli nome dalla coda.\n"); if(!isEmpty(headPtr)){ queueNode.nome[i]=dequeue(&headPtr,&tailPtr); printf("%s e' stato rimosso.\n",queueNode.nome); } printQueue(headPtr); break; default: printf("Scelta non valida!\n"); instructions(); break; } printf("Inserisci un numero di scelta\n"); scanf("%d",&choice); } printf("Fine del programma\n"); system("PAUSE"); return 0; } void instructions(void) { printf("Inserisci la tua scelta!\n" "1. Per aggiungere un nome alla coda\n" "2.Per rimuovere il nome dalla coda\n" "3. Per terminare il programma\n"); } void enqueue(QueueNodePtr *headPtr, QueueNodePtr *tailPtr, char value[]) { QueueNodePtr newPtr; newPtr=malloc(sizeof(QueueNode)); if(newPtr!=NULL) {newPtr->data=value; newPtr->nextPtr=NULL; if(isEmpty(*headPtr)){ *headPtr=newPtr; } else { (*tailPtr)->nextPtr=newPtr; } *tailPtr=newPtr; } else{ printf("%s non inserito. Memoria non disponibile!\n",value[]); } } char dequeue(QueueNodePtr *headPtr,QueueNodePtr *tailPtr) { char value[12]; QueueNodePtr tempPtr;//Puntatore ad un nodo temporaneo value=(*headPtr)->nome[]; tempPtr=*headPtr; *headPtr=(*headPtr)->nextPtr; if(*headPtr==NULL) { *tailPtr=NULL; } free(tempPtr); return value; } int isEmpty(QueueNodePtr headPtr) return headPtr==NULL; } void printQueue(QueueNodePtr currentPtr) { return headPtr==NULL; } void printQueue(QueueNodePtr currentPtr) { if(currentPtr==NULL) { printf("La coda e' vuota!\n"); } else { printf("La coda e':\n"); while(currentPtr!=NULL){ printf("%c-->",currentPtr->nome[]); currentPtr=currentPtr->nextPtr; } printf("NULL\n"); } }


Rispondi quotando
