mar_kostas13 Δημοσ. 5 Νοεμβρίου 2013 Δημοσ. 5 Νοεμβρίου 2013 Μπορεί κάποιος να μ πει για ποιο λόγο δεν μπορώ να διαβάσω τα δυο char tis λίστας. στην συνάρτηση εισαγωγής Insertion();.Είναι απλή συνδεδεμένη λίστα αυτό που θέλω να κάνω.Σας ευχαριστώ εκ των προτέρων.! #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct list_node{ char *command; char *username; struct list_node *next; }List; void insertion(List *head,List *newnode) { if(head==NULL) {head=(List *) malloc (sizeof (List)); printf("Dwse entolh: "); scanf("%s",head->command); printf("Dwse onoma: "); scanf("%s",head->username); head->next=NULL;} else {List *current; current=head; while(current->next!=NULL) current=current->next; newnode=(List*)malloc(sizeof (List)); newnode=current; printf("Dwse entolh: "); scanf("%s",(newnode->command)); printf("Dwse onoma: "); scanf("%s",(newnode->username)); } } int main() { int counter=0; List *head,*newnode; head=NULL; int choice; do{ printf("\n\n****************************************************************************\n"); printf("MENU\n"); printf("\nDose epilogi.\n"); printf("<1> Gia eisagwgh stin lista\n"); printf("\n_________________________________________________\n"); switch(choice){ case 1:{ insertion(head,newnode); } } } while(choice!=7); return 0; }
ZAKKWYLDE Δημοσ. 5 Νοεμβρίου 2013 Δημοσ. 5 Νοεμβρίου 2013 πρέπει να κάνεις malloc και στα char* σου, επίσης ο τρόπος που προσθέτεις καινούργιο node είναι λάθος.
mar_kostas13 Δημοσ. 5 Νοεμβρίου 2013 Μέλος Δημοσ. 5 Νοεμβρίου 2013 πρέπει να κάνεις malloc και στα char* σου, επίσης ο τρόπος που προσθέτεις καινούργιο node είναι λάθος. Μπορεις να μ δειξεις πως θα κάνω την malloc sta char * m.?Στην αρχη τα δηλωνα ετσι Char command[60] αλλα και πάλι δεν μου ετρεχε. θεωρω το λαθοσ μ στην εισαγωγη του νεου node επειδή δεν έβαλα την εντολη ''newnode->next=NULL; '' στο τέλος.
ZAKKWYLDE Δημοσ. 5 Νοεμβρίου 2013 Δημοσ. 5 Νοεμβρίου 2013 Το malloc είναι πολύ απλό να το κάνεις στα char *. list->command = (char*) malloc(50); Αν πριν το είχες char command[60] θα έπρεπε να σου παίζει, ενδεχομένως να ήταν κάτι άλλο λάθος. Στο while loop που κάνεις τερματίζεις ουσιαστικά στο τελευταίο node όπου current->next == NULL Εσύ έτσι όπως το έχεις γράψει απλά αντικαθιστάς το current node με το new node. Αλλά πρέπει να κολλήσεις το newnode στο next του current node Οπότε φτιάχνεις το newnode σου το γεμίζεις και στο τέλος κάνεις: current->next = newnode; newnode->next = NULL; 1
cyberrobot Δημοσ. 5 Νοεμβρίου 2013 Δημοσ. 5 Νοεμβρίου 2013 seems legit... και μένα το μάτι μου στο δείκτη σταμάτησε με την μια.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα